For This project use MERN stack
yarn start
- to launch your project
Watch this video: Hook Setup
- Pull repo.
git checkout -b <name that you have set in pre-requirements>/main
git push origin <name that you have set in pre-requirements>/main
- If you are windows user, make sure that
bash
have been installed if not check Installation link; - Open Terminal in your project (make sure that you are in main directory with
hooks
folder) - (ONLY FOR WINDOWS USERS) Change first line in
./hooks/commit-msg
,./hooks/pre-commit
and./hooks/setup/hooks
from#!/bin/sh
to#!/bin/bash
; - Run
nano ./hooks/pre-commit
and changeUSER_NAME="user_name"
on third string toUSER_NAME="<YOUR-NAME_LAST_NAME>"
Example:USER_NAME="my_name"
and save the file. - Run command
yarn configure:hooks
(FOR WINDOWS USERSyarn configure:hooks:windows
); - Run command
yarn start
Now you can run project by calling yarn start
Avoid Upper case! Do not use N_Surname
syntax or Implement-Crud-Todo
syntax
If you keep experiencing something like: tslint: command not found please do the following:
yarn global add tslint typescript
link: https://stackoverflow.com/questions/36910592/enabling-eslint-on-typescript-files/64175035#64175035
Time-frames of the test task is highly important! You have only 2 weeks for the task below, please use this time wisely. Good luck!
- Todo list - CRUD operations on backend;
- Each
PUT
POST
rout should has validation ofreq.body
and throw400
error in case of failed validation - Separate your logic from routes. You should perform all interactions with
DB
inside yourservices/<filename>.service.ts
file and import it tocontrollers/<filename>.controller.ts
. After that you can call your controllers in routes - _Create GENERIC validator, isExist (for put, delet and get by id), tryCatch middlewares _
- Todo list - Connect your CRUD operations with frontend;
- You should split your code on logical components (
<TodoContainer />
,<TodoElement/>
etc); - For Edit/Add you should use forms written with Formik;
- Put logic related to server interactions inside
service/http.ts
file (check Our Documentation) - For data fetching you can use React Query, it also help you to globally store your data
- Todo list page should have different behaviors on different devices. Desktop - should be displayed as a table, Tablet - should be as slider, Mobile - list.
- Your font sizes, colors, margins, paddings should be in THEME const
- Create QUERY_KEYS and ROUTER_KEYS const for routing
- Use styled components
- Design should be tablet and mobile adaptive
- Authorization (login/signup) backend;
- Use jwt authorization and Passport for that
- Logic related to token processing should be stored in
middlewares/auth.middleware.ts
- Private todos should be accessible only for Todo creators
- Change password endpoint
- Authorization (login/signup) frontend;
- Should store token in localStorage
- Use Formik for handling validation and submit func
- Extend your http service for interacting with auth requests (check our codestyle)
- Integrate logout and edit user information UI
- Filters for todo list by title and statuses (private and completed);
- You should pass filter params through
req.params
(localhost:3000/todo?search=test&status=completed
) - Connect backend filtration with UI components
- Button pagination;
- All pagination should be handled by backend
- Change frontend request with pagination params
- Pagination should be done differently on different devices. Desktop - button pagination, Tablet - horizontal scroll pagination, Mobile - vertical scroll pagination
Backend should have stored in
backend
dir, mobile should be stored infronted
dir. Use technologies fromUseful links and technologies
. You should create separate pr for each task.
Design: drive.google
- Each intern will be attached to a branch (
<name that you have set in pre-requirements>/main
); - When you are working on a feature you should create a separate branch from
<name that you have set in pre-requirements>/main
with the following name:feature/<name that you have set in pre-requirements>/<feature-name>
orbug/<name that you have set in pre-requirements>/<feature-name>
. Once you are done with a subtask you should create a PR into<name that you have set in pre-requirements>/main
and pingDanyyl Kuchkov & Oleksii Samoilenko
for review; - Title of your PR's should be
feat: <name of your feature>
orbug-fix: <name of your bugfix>
. Description field should contain short info about feature/bug; - PR's are under review ONLY between 9AM - 9:30AM (Kyiv EET time)
If you will face with some issues with git. Ask
Danyyl Kuchkov
via slack;
Corporate Codestyle
Formik
Mongoose
Typescript
Passport
React Query
Styled component