Giter Site home page Giter Site logo

deprecated-code-corps-rails-api's People

Contributors

begedin avatar christopherstyles avatar ethantanner avatar green-arrow avatar joshsmith avatar madisonsites avatar npendery avatar ptrikutam avatar rigelstpierre avatar scarfdestroyer avatar schippada avatar schneidmaster avatar thomascchen 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

Watchers

 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

deprecated-code-corps-rails-api's Issues

Add GitHub repository model

We need a model that includes a title, organization, repository name for a GitHub repository. A project should be able to have many of these.

Not sure what the proper name for this is.

Add Post model

A Post model is the main activity point in the app. These are of at least a few types: Idea, Issue, Progress, and Task.

Every Post type except for a progress post has a boolean status of open or closed to indicate whether it should show up in the main list of posts. This will help declutter everything, similar to how GitHub works.

A Post should belong to both a Project and a User.

Reset and forgot password errors do not follow JSON API specs

This is what they look like at the moment:

def render_no_such_email_error
  render json: {errors: {email: ["doesn't exist"]}}, status: 422
end

def render_could_not_reset_password_error
  render json: {errors: {password: ["couldn't be reset"]}}, status: 422
end

I believe these should be replaced either by initializing a ActiveModel::Errors object (so we just serialize them as validation errors), or we should define our own custom errors and have the serializer serialize those.

Post should include a project's users

We'd like to add the ability to @mention at some point. This will require an includes for a project's user for any Post, since we need to be able to quickly reference a list of associated users for the project.

Work out access rights for post and comment creation

  • When should the user be allowed to create posts for a project?
    • Is it post_type specific? Role-specific? Project type specific? We need to flesh this out.
  • When should the user be allowed to create comments for a post?
    • Some overlap with posts here, but also differences, I think.

Add forgot password logic

We need to add the ability to reset a password by:

  • Entering your email address and clicking a button
  • Getting an email with a tokenized URL
  • Using the tokenized URL to go to a form to enter a new password and confirm new password
  • Submitting form changes the old password to the newly submitted password
  • Redirects to sign in page

Change usernames/slugs to allow dashes

A username and slug should be allowed to have any \w word character: an underscore, a letter, or number. It can also have hyphens, as long as the username/slug does not begin or end with it.

A regex like this will probably work: ^[\w](?:[\w_-]*[\w])?$ for validations.

Add skills with categories

We want a Skill model that includes a title:string and a category. For example, Ruby is in the Development category.

Add Project model

A Project should have a:

  • title:string
  • description:string
  • and an icon

Add images for posts and comments

A PostImage or CommentImage should be able to be uploaded as a Base64 encoded file. We'll take the original filename and save that.

We'll be replacing the first occurrence of a string like ![Uploading wx4VIGt.jpg…]() in the client-side with the actual URL of the image. I tested this on Github and if you paste that string and then drop the file in (which generates that string again), it will replace just the first instance of it, every time.

We can create a reference to a post or comment with this model as belongs_to, but it will never be used in a has_many. We should also probably make it belongs_to a User.

The image processing will need to be asynchronous as usual, but we'll have to subscribe to some async stream for it. I think some minimal resizing down should probably be done.

The URL string should absolutely have the ID of the post or comment and the ID of the image. If we ever change URLs, we may have to rely on this (with some downtime) to do URL replacement in our markdown and body text.

But we should be trying to make these URLs as immutable as possible.

Add a PostLike or similar model

We want the ability to "like" posts, so we need a way for users to like them. There should probably be a counter cache column for this as well.

Add icons to projects

We should have an icon created with Paperclip in S3 that's hosted through CloudFront.

Expose `GET /skill_categories`

Initially, I thought it should be GET "/skills", but now that I think about it, since we do have skill categories, we should probably have a GET "/skill_categories", with an include of skills.

That way, through an autocomplete feature, we could fetch the data in a hierarchical form. It could go either way, though.

Add Comment model

A Comment should belong to a User and a Post. It should have a body and a timestamp of some sort.

Add Contributor model

We need a Contributor model that relates a User to a Project, with some metadata like their status in the project (admin, etc). We should look to GitHub for a good set of statuses.

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.