The idea of out project is to create application which will help people who are looking for a temporary house for their pets, find it. Others can earn money or simply take care of pets. This project is high relevant nowadays, because a lot of people had to leave their houses and some of them left their pets without food and water.
There are four roles in our system:
- Owner, the owner of the pet.
- Holder, person, who agreed to look after the pet.
- User, includes two previous roles, that has certain possibilities.
- Admin, manages the system.
They have different permissions and functionally.
Owner has the following features:
- Add pet to his zoo. Acceptance criteria: max count is 10
- Edit information about his pet.
- Delete pet from his zoo.
- Create advertisement. Acceptance criteria: user must have at least one pet
- Edit advertisement. Acceptance criteria: nobody of holder left request for advertisement.
- Delete advertisement. Acceptance criteria: advertisement is not in progress and not completed.
The holder has the following features:
- See the list of advertisement to choose one of them.
- Send request to complete an advertisement.
- Discard request. ... in progress
User can:
- Register in system with email, password and role.
- Login into system with email and password.
- Reset his password with email.
Admin manages the hole system, so he can do all CRUD operations with Users and Pets.
-
NestJs + Typescript
When beginning a new Node.js project, NestJS is a much better choice than ExpressJS since it is built on a clear design with a few simple components (controllers, modules, and providers). Typescript brings clarity to the project, which is a key point of collaboration in our team. -
MongoDB + Mongoose
Mongoose module is one of the most powerful external modules of NodeJS. Mongoose is a MongoDB ODM i.e (Object database Modelling) that used to translate the code and its representation from MongoDB to the Node.js server. -
Auth: - (3rd party)
As a 3rd party auth provider we will use Firebase Auth. It's a reliable and easy-to-use solution, especially for small applications.