A trello clone task manager app has built with React.js for frontend and Nest.js for backend. The app allows users to log in with previously registered credentials in order to create and manage tasks. After log in, users can add, update or remove workspaces and tasks. The task are stored in PostgreSQL database which provided by Neon.tech. User profile also can be updated.
Demo: Link
Email: test@demo.com
Password: 123
(Render.com free plan needed approx. 10 seconds to load the page at the first time)
- Allow user to register, log in and log out
- Login can be done with previosly registered account
- Only logged in users have rights to create, update, remove or check the tasks
- User can update his/her own profile and tasks
- PostgreSQL database used to store data
- Prisma ORM used to retrive data from database
- React.js used for CSR
- Nest.js used for backend
- Bcrypt used to hash the user password
- JWT used for authentication
- React Hook form used to create forms
- Zod used for validation
- Material UI used for styling
- Toast notification use to improve UX
- TanStack query use to get data from backend and cache them
- Responsive design
- Turborepo used for monorepo
- Deployed on Render.com as Web Service
- Clone the repository
- Run
npm install
command in your terminal inside the root folder - Set up PostgreSQL database with docker or with an online database.
- Navigate to backend folder and create .env file and add enviromental variables:
open ssl key should generate to JWT_SECRET
PORT=4000
DATABASE_URL=
DIRECT_URL=
JWT_SECRET=
REFRESH_JWT_SECRET=
- Run
npx prisma generate
- Navigate to frontend folder and create .env file and add environmental variables:
VITE_BACKEND_ADDR=http://localhost:4000
VITE_API_LOGIN=${VITE_BACKEND_ADDR}/api/auth/login
VITE_API_LOGOUT=${VITE_BACKEND_ADDR}/api/auth/logout
VITE_API_REGISTER=${VITE_BACKEND_ADDR}/api/auth/register
VITE_API_JWT_REFRESH=${VITE_BACKEND_ADDR}/api/auth/refresh
VITE_API_WORKSPACES=${VITE_BACKEND_ADDR}/api/workspaces
VITE_API_BOARDS=${VITE_BACKEND_ADDR}/api/boards
VITE_API_LISTS=${VITE_BACKEND_ADDR}/api/lists
VITE_API_CARDS=${VITE_BACKEND_ADDR}/api/cards
VITE_API_USER=${VITE_BACKEND_ADDR}/api/user
- Navigat to root folder and run
npm run dev
command in your terminal - Backend server running at
http://localhost:4000/
- Frontend server running at
http://localhost:5173/
- Open SSL key generation:
- You can use the following link to create open ssl key:
https://www.cryptool.org/en/cto/openssl
or you can install open ssl and generate key from terminal. To generate code you should run:openssl rand -base64 32
- You can use the following link to create open ssl key:
- React Hook Form usage with UI component needs to has
ref={null}
property to avoid ref warning: - Loading screen approaches (Fetch-than-render, Render-as-you-fetch, Suspense, ):
- Validation decorators:
- Prisma
npx prisma migrate dev --create-only
creates new migration and delete the remote databasenpx prisma migrate dev
sync remote database with schemanpx prisma db push
push the schema from local to remote database
- JSON Web Token options:
- CORS configuration options: