A platform assigns assistant workers to families to help them with daily routines and work such as housekeeping and fitness training.
Families need workers to help them in their routines and assist them with their tasks. Suppose you have an elderly father and you need a driver to be with him whenever he goes, or you and your wife lives in a huge house and she needs help doing the house work such as laundry and dishes.
We provide the families with honest, reliable, and experienced workers in five distinct specializations which are: Housekeeping, Driving, Personal Training, Guarding, and Babysitting. The client can go to our website and ask to book a client specifically or apply his job post to the admin to send a worker for him.
- As a user, I should be able to see the landing page when I first open the website.
- As a user, I should be able to signup or login if I'm not authenticated.
- As an admin user, I should be able to go to my dashboard when I click on the profile button in the account settings dialog.
- As a user, I should be able to logout by clicking on the logout button in the account settings dialog or the logout button in the header.
- As a user, I should be able to navigate between the sections of the landing page or the workers page from the header or the footer.
- As a user, I should be able to register my information as a worker from the 'Join Our Family -Worker-' in the landing page and wait for the company to contact me when they need new workers.
- As a user, I should be able to got to the workers page from the header or footer.
- As a user, I should be able to search for filter the workers by searching by their names or selecting a specialty.
- As a user, I should be able to navigate between cards by the pagination.
- As an admin user, I should be able to see the total income, number of hired workers, number of unemployed workers, number of jobs, and number of clients cards in the statistics section in the admin dashboard.
- As an admin user, I should be able to see a chart explains the number of jobs to their specialty.
- As an admin user, I should be able to clients table section and see more information about the user when I click the profile icon in the last column of the table.
- As an admin user, I should be able to go the workers table section in the admin page and see more information about the user when I click the profile icon in the last column of the table.
- As an admin user, I should be able to see the jobs cards and a table of the workers with the ability of filtering them with the specialty in the jobs section.
- As an client user, I should be able to go to my profile when I click the profile button from the setting dialog in the header.
- As an client user, I should be able to see my information in the my profile's info card.
- As an client user, I should be able to see the total amount of money I spent in my profile.
- As an client user, I should be able to see the workers who previously worked for me cards and their reviews.
- When the user first opens the website, he will see the landing page, from the landing page the user can navigate between the sections and the workers page from the nav bar.
- The user can login or signup if he/she is not authenticated.
- The user should go to the 'Join Our Family' form at the landing page to register a worker.
- If the user is authenticated, the admin user can go to the dashboard from the profile button in the account settings dialog.
- If the user is authenticated, the user can logout from the account settings dialog and the logout button in the header.
- In the dashboard, the admin can see the statistics, the clients table, the workers table, and the jobs dashboard.
- In the client's profile, the client can see his/her profile information, the total money the user has spent, and the workers he previously worked with and their reviews.
- Clone this repository by typing
git clone https://github.com/moustf/FamBestie.git
- Run
npm i
on the root directory to install the packages of the backend. - Navigate to client directory by typing the command
cd client/
and runnpm i
.
You should install PostgreSQL
.
- After installing
PostgreSQL
, typepsql
in the terminal to open the postgres repl. - To create a database, type the command
CREATE DATABASE -database name-;
. - Then create a user for this DB by typing
CREATE USER -user name- WITH superuser password -password-
. - After that
ALTER DATABASE -database name- OWNER TO -user name-;
to connect the database to the user you have created. - Now you need to update your database with the schema and seed that waits for you, all you need to do is just typing
npm run dbSeed
which re-creates the database schema and also updates the database with the seed data.
- You can start the express server by writing
npm run dev
on the root directory. - To start the react dev server, navigate to the client folder by typing
cd client/
and thennpm start
.
--> The port for the express server is 8080
and you can find the react dev server running on port 3000
, copy this link http://localhost:3000
and paste it in the url bar in your browser to open the app.
- Node.js
- React.js
- Redux.js
- Express.js
- JavaScript
- TypeScript
- PostgreSQL
- Sequelize
- Material UI
- use-hook-form
- react-query
- Eslint
- CSS3
I was supervised by Imad Shatali, a senior full stack engineer.
This website was analyzed, designed, and developed by Mustafa Salem, a junior full stack web developer.