For This project use MERN stask
- Make sure that you can launch backend and frontend.
- Open Terminal in your project (make sure that you are in main directory with
hooks
folder); - Run command
cp hooks/pre-commit .git/hooks/
; - (ONLY FOR MAC/LINUX)Run command to give execute permissions
chmod +x .git/hooks/pre-commit
;
- 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
- 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)
- Authorization (login/signup) backend;
- Use jwt authorization and Passport for that
- Logic related to token processing should be stored in
middlewares/auth.middleware.ts
- Authorization (login/signup) frontend;
- Should store token in localStorage
- Use Formik for handling validation and submit func
- 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
)
- Button pagination;
- All pagination should be handled by backend
This features will be available only after successful finished of required features.
- 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
Backend should have stored in
server
dir, mobile should be stored inmobile
dir.
Use technologies fromUseful links and technologies
. You should create separate pr for each task.
Design: drive.google
- React Native details;
- Front-end should ONLY be launched with React Native EXPO, not (CLI)
- For navigation between screens use React Native Navigation (https://reactnavigation.org/docs/getting-started/)
- Try to play around with bottom stack navigation, while working with navigation (https://reactnavigation.org/docs/bottom-tab-navigator)
- Use
useRoute
+useNavigation
- ESlint
- ESlint should be configured for all the files in the app
- Each intern will be attached to a branch (
<username>/main
); - When you are working on a feature you should create a separate branch from
<username>/main
with the following name:feature/<username>/<feature-name>
orbug/<username>/<feature-name>
. Once you are done with a subtask you should create a PR into<username>/main
and pingDanyyl Kuchkov & Oleksii Samoilenko
for review; - Title of ypur PR's should be
feat: <name of your feature>
orbug-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;
Corporate Codestyle
Formik
Mongoose
Typescript
Passport
Expo
React Query