GithubHelp home page GithubHelp logo

cgs-test-camp-task's Introduction

CGS Test project

For This project use MERN stask

Pre requirements

  1. Make sure that you can launch backend and frontend.
  2. Open Terminal in your project (make sure that you are in main directory with hooks folder);
  3. Run command cp hooks/pre-commit .git/hooks/;
  4. (ONLY FOR MAC/LINUX)Run command to give execute permissions chmod +x .git/hooks/pre-commit;

Required features

  1. Todo list - CRUD operations on backend;
  • Each PUT POST rout should has validation of req.body and throw 400 error in case of failed validation
  • Separate your logic from routes. You should perform all interactions with DB inside your services/<filename>.service.ts file and import it to controllers/<filename>.controller.ts. After that you can call your controllers in routes
  1. Todo list - Connect your CRUD operations with mobile;
  • 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
  • Use <FlatList /> for render dynamic list (reed RN docs: https://reactnative.dev/docs/flatlist)
  • Use React Native EXPO in order to install RN for both iOS & Android (https://docs.expo.dev/index.html)
  1. Authorization (login/signup) backend;
  • Use jwt authorization and Passport for that
  • Logic related to token processing should be stored in middlewares/auth.middleware.ts
  1. Authorization (login/signup) frontend;
  • Should store token in localStorage
  • Use Formik for handling validation and submit func
  1. 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)
  1. Button pagination;
  • All pagination should be handled by backend

Advanced features

This features will be available only after successful finished of required features.

Graph QL implementation

  1. Attach express-graphql to backend
  • Take existent controllers in your backend and create another /graphql route with all this controllers
  • Use axios for querying a controllers
  • Graphql api should work in parallel with existing REST api

NOTES

Backend should have stored in server dir, mobile should be stored in mobile dir.
Use technologies from Useful links and technologies. You should create separate pr for each task.

Design: drive.google

  1. React Native details;
  1. ESlint
  • ESlint should be configured for all the files in the app

PR convention

  1. Each intern will be attached to a branch (<username>/main);
  2. When you are working on a feature you should create a separate branch from <username>/main with the following name: feature/<username>/<feature-name> or bug/<username>/<feature-name>. Once you are done with a subtask you should create a PR into <username>/main and ping Danyyl Kuchkov & Oleksii Samoilenko for review;
  3. Title of ypur PR's should be feat: <name of your feature> or bug-fix: <name of your bugfix>. Description field should contain short info about feature/bug;

If you will face with some issues with git. Ask Danyyl Kuchkov via slack;

Useful links and technologies

Corporate Codestyle
Formik
Mongoose
Typescript Passport Expo React Query

cgs-test-camp-task's People

Contributors

codegeneration-2020 avatar

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.