In this repository, we will keep adding boilerplate code for a complete project which covers API, DB, Web, and Mobile platforms.
We should follow in both MEAN and MERN (MongoDB, Express.js, React.js, React-Native, Angular, and Node.js) in the project depending on the part of the project.
Different part of the project is arranged in different folders. Details of that part is available in the readme file inside that folder.
This repository is built on top of Express.js, React.js, React-Native, and Angular however in the implementation detail, we will find other supporting technologies as well.
- React - A JavaScript library for building user interfaces
- Angular - A JavaScript framework for building user interfaces]
- React-Native - A JavaScript framework used to develop applications mostly for Android and iOS.
- MongoDB - The application data platform
- Testing Library - React Testing Library
- Axios - Promise based HTTP client for the browser and node.js
- RxJS - Reactive Extensions Library for JavaScript.
- NgRx - Store is RxJS powered global state management for Angular applications, inspired by Redux.
- Karma - Karma is a task runner for our tests.
- Jasmine - Jasmine is a behavior-driven development framework for testing JavaScript code.
- Cypress - Cypress is a JavaScript end to end testing framework.
- Node.js - evented I/O for the backend
- Express.js - Fast, unopinionated, minimalist web framework for Node.js
- Mongoose - Mongodb object modeling for node.js
- Swagger - API development and testing tool
- Jest - JavaScript testing framework
- Super Test - Super test API testing framework
Details frameworks and packages can be found in the package.json files in the server and client directory.
- Information of diverse fields is shown to the end clients category-wise.
- In the admin panel data entry can be done after log in authentication.
- In the admin panel users have different levels of access.
Following are the parts of the project. Details of each part are given in the readme file in folder to the correspondit part.
This is the end client part of the project. This is a React single-page web app.
Layer: Frontend (Web SPA)
Primary Technology: ReactJS
Folder: client_end
This is the mobile phone version of the end client part of the project. This is a React-Native mobile app.
Layer: Frontend (Mobile application)
Primary Technology: React Native
Folder: client_end_mobile
This is the admin panel part of the project. This is an Angular single-page web app.
Layer: Frontend (Web SPA)
Primary Technology: Angular
Folder: client_admin_panel
This API serves the data list. This is a NodeJS microservice.
Layer: Backend (Microservice)
Primary Technology: NodeJS
Folder: server_datalist
This API category list. This is a NodeJS microservice.
Layer: Backend (Microservice)
Primary Technology: NodeJS
Folder: server_category
This API serves the following two functions:
- Create or update data and category items.
- Provide, create, and update user roles and permission items.
- Log in authentication.
This is a NodeJS microservice.
Layer: Backend (Microservice)
Primary Technology: NodeJS
Folder: server_apply
This project can be run basically in two ways. One is using docker, other way is to run manually via vscode.
work in progress
- Node.js : To run npm packages
- MongoDB : As a database for the application
- To run via vscode, we should run the server and client side projects separately, and also make sure mongodb is up and running.
- To test the client side with mock data seed data to DB.
We assume we run the MongoDB in the docker container.
cd server_<server name>
npm i
npm run db:up
npm start
cd client_<client name>
nvm use --lts
npm i
npm start
To seed the database commands. It will seed data in setup folder to DB.
npm run db:seed
npm run db:migrate
You should be able to see the username and password hash in the /server_apply/setup/users.json
file.
One admin user id as follows -
User id: saeed.sharman
Password: password1
This project is MIT licensed