Todo application built with Angular, NgRx Signal, Express, PostgresQL, TypeORM
- Add a new todo
- Mark a todo as completed or progress
- Update a todo
- Delete a todo
- Node.js (v22 or higher)
- npm or yarn package manager
- PostgreSQL database (only for non-Docker setup)
- Docker (for Docker setup)
-
Clone the repository
-
Rename the
.env.examplefile in the root directory to.envand update the credentials such as database name, username, password with your own -
Start the application using Docker Compose:
docker-compose up --buildThe application will be available at http://localhost:4200 and the server will be available at http://localhost:3000
- Create a PostgreSQL database for the application
- Rename the
.env.examplefile in theserverdirectory to.envand update the credentials such as database name, username, password with your own
- Navigate to the server directory:
cd server- Install dependencies:
npm install- Start the development server:
npm run devFor production:
npm startThe server will run on http://localhost:3000 by default.
- Navigate to the client directory:
cd client- Install dependencies:
npm install- Start the development server:
npm startThe application will be available at http://localhost:4200.
For production build:
npm run buildTo run frontend tests:
cd client
npm testTo run backend tests:
cd server
npm test├── client/ # Angular frontend application
│ ├── src/
│ │ ├── app/
│ │ │ ├── core/ # Core services and interceptors
│ │ │ ├── features/ # Feature components
│ │ │ └── store/ # NgRx Signal store
│ │ └── shared/ # Shared models
| └── Dockerfile # Docker configuration for Frontend
└── server/ # Express backend application
│ ├── src/
│ │ ├── config/ # Database configuration
│ │ ├── controllers/ # Route controllers
│ │ ├── entities/ # TypeORM entities
│ │ └── routes/ # API routes
│ └── Dockerfile # Docker configuration for API
└── docker-compose.yml # Docker services configuration