Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
2.5 kB
71
Indexable
Never
You are almost done!

Build an RoR API app that should cover:

User

Registration  

Authentification

Email confirmation

Recover account

Article

Create

View one article + comments

View Articles

Edit

Delete(soft)

Comments

Create

View

Categories

View all



Models:

User:

avatar(image)

first_name

last_name

email

password

Article

title

description

cover (image)

Tags

category

author

Tag

name

Category

name

Comment

value

user

The models from the above can have some errors in naming, or can miss some info - you need to pay attention.

What needs to be done:


API documentation (Readme + Swagger) no postman

Dockerized app (the app should run in docker/docker-compose)

The DB should be PostgreSQL

The confirmation email should be sent 5 seconds after the user is registered (we should see it in the sidekiq UI)

90% test coverage

Create seeds for the DB with 10k users and 20k articles, 3 categories

avatar and cover should be uploaded to the S3 bucket (for prod), for dev/test mode can be saved on your local machine.

Articles can be published or hidden

Tags should be created when an article is created/all downcased characters/unique

Emails should have a template HTML version

Users can edit/delete only their articles

Search articles by [author, category, tags, title(we can write a few words from the title and should match), created_at date] + pagination (default=10 items per page but we can change it in the request)

comments also should have pagination (default 25 records per page)

site admin can ban authors from the app and they will not be able to authenticate

site admin can remove the author ban

We should be able to rollback the article[all fields] to the last 5 versions

ex:

v1(created): title: Lorem ispum dollor

v2(edited): title: Lorem ipsum dollor

v3(current version): title: Lorem ipsum dol

from this example, we should be able to roll back the article to v1 or v2.

Implement Comments rating and sort comments by rating in the article

Let's keep in mind that this API will get big and/or your code will need to be isolated/improved. → that means your business code should not be in the controller but outside of it.

use patterns from  to format the code

Use Rubocop to format the code

please create a subtask with your initials

create a new repo

try to have each commit clean and informative and to contain your task id as a prefix. To not have too much code in one commit.

you have one week to finish this.

Good Luck!