Code Monkey home page Code Monkey logo

gandhi's People

Contributors

chrismckenzie avatar gbradleypro avatar mike-marcacci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gandhi's Issues

Export tables to CSV

Once an admin has customized a table, she should be able to export it to a CSV file for use in spreadsheets.

Depends on #36

Minify JS

Right now we serve a giant, unminified, 50k-line main.js file. For now we don't want to worry about async loading, but we could probably get a good boost from minifying this file. Unfortunately, I've been lazy and haven't been using angular's array notation. Thus this includes a small refactor and minification.

User RethinkDB for file storage

RethinkDB 0.14.0 introduced binary support. For the sake of simplicity, easier portability, and because RethinkDB's architecture should be able to handle this efficiently, we should store user uploads in the database.

Implement searching in list endpoints

To finish #34, #35, and #36, all list endpoints will need to respect a "search" query parameter that accepts a string and searches/filters accordingly:

Users

  • name
  • email

Cycles

  • title

Projects

  • title

Create system for invitations

There is a common use case where applicants will want to invite someone else to their projects by email, but the invited might not yet have an account or might have an account with a different email. We need to add hashed invitation tokens (with a corresponding role) to a project, and provide an easy way for the invited party to claim it.

Dependency of #28

Create "upload" directive/decorator

Create a directive/decorator that allows users to choose from previously uploaded files and/or upload new ones.

Should be configurable to support min/max file count, file types, etc.

Refactor component REST API

Having the components PATCH data to /api/projects/:project is becoming unwieldy from the server-side perspective, and could have unintended consequences should a component accidentally include other project data in its request. Instead, let's consider implementing the following: [PUT] and [PATCH] to /api/projects/:project/flow/:stage/

Allow users to be assigned to an entire program

This will be useful for internal reviewers, etc.

User's role is overridden by role on a project. This way, if an internal reviewer is the owner of a project she will only have owner access to her project, but reviewer access to the rest.

Handle module dependencies better

Due to the fact that gandhi modules are pulled in on-the-fly, their bower dependencies will not have been processed on the first run.

Upgrade RethinkDB to 1.14

Rethinkdb 1.14 introduces some breaking change in the way document manipulations return date (returnChanges).

Dependency of #47

0.5 - Oriented

This milestone marks the point at which gandhi can be downloaded configured, and implemented.

REST API

  • The API should be reasonably stable
  • Schemas must be enforced and permissions validated server side

Components

  • The component spec must be usable and somewhat stable
  • All stages must use the component spec

Testing

  • API must be fully tested
  • Relevant units test must exist and be passing

Relate files and projects

Right now, there is no good way to track the dependency of a project on a file; therefore, we don't let users remove files they have already uploaded.

Add admin modes to all existent components.

This one's way overdue and will save me a bunch of time in addition to providing visibility and configurability to the non-technical admins. Each component needs a GUI in the admin instead of requiring the JSON object to be edited manually.

Integrate form into all components

I've already had several requests to have configurable forms alongside component-specific features, such as "start" and "schedule." Whenever it makes sense, each component should accept "form" and "schema" options that render a form with angular-schema-form.

The "form" component obviously already implements this.

Apply default role to flow in "new"

Right now all stages are visible for a cycle on the "new" project page. We need act as if we have been assigned the default role on that page.

Process scheduled events

Process events that have time-based criteria. This will involve some kind of queueing system... even though we're only running a single node, we're using multiple processes via PM2, so we'll need to build this in a distributable way, either using a rethinkdb table as a queue or introducing redis into the stack.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.