todolist-proto/README.md

161 lines
3.7 KiB
Markdown

# Dalex Todo Prototype
A full-stack todo application with Vue3 frontend and ASP.NET Core backend, secured with Keycloak authentication.
## Tech Stack
### Frontend
- **Framework**: Vue 3.4+ with Composition API
- **Language**: TypeScript 5.4+
- **Styling**: Tailwind CSS 3.4+
- **Build Tool**: Vite 5.1+
- **HTTP Client**: Axios 1.6+
- **Authentication**: Keycloak-js 25.0+
### Backend
- **Framework**: ASP.NET Core 9.0
- **Architecture**: Minimal APIs
- **Language**: C# with .NET 9.0
- **Database**: SQLite with Entity Framework Core 9.0
- **Authentication**: JWT Bearer (Microsoft.AspNetCore.Authentication.JwtBearer 9.0)
### Infrastructure
- **Containerization**: Docker & Docker Compose
- **Web Server**: Nginx (for frontend production)
- **Authentication Server**: Keycloak
- **Package Registry**: Gitea (https://brokkr.robotico.dev/)
### Development Tools
- **Python**: 3.x (for deployment scripts)
- **Node.js**: 20.x LTS
- **.NET SDK**: 9.0
## Features
- **Frontend**: Vue3 with TypeScript and Tailwind CSS
- **Backend**: ASP.NET Core 9.0 Minimal APIs with SQLite
- **Authentication**: Keycloak integration
- **Containerization**: Docker and Docker Compose
## Prerequisites
- Docker and Docker Compose
- Keycloak server (configured at https://terminus.bluelake.cloud/)
## Getting Started
### Running with Docker Compose
1. Clone the repository
2. Run the application:
```bash
docker-compose up --build
```
3. Access the application:
- Frontend: http://localhost:3030
- Backend API: http://localhost:5050
### Development Mode
#### Backend
```bash
cd backend
dotnet restore
dotnet run
```
#### Frontend
```bash
cd frontend
npm install
npm run dev
```
## Architecture
### Backend (ASP.NET Core)
- Minimal APIs architecture
- SQLite database for data persistence
- JWT authentication via Keycloak
- RESTful API endpoints for CRUD operations
### Frontend (Vue3)
- TypeScript for type safety
- Tailwind CSS for styling
- Keycloak-js for authentication
- Axios for API calls
## Architecture
### Data Model
The application uses a simple but effective data model with user-isolated todos. For detailed information including:
- Entity relationship diagrams
- Database schema
- Data flow architecture
- Business rules and sorting logic
- Security considerations
See [DATAMODEL.md](DATAMODEL.md) for complete documentation with Mermaid diagrams.
### API Endpoints
- `GET /api/todos/recent` - Get recent todos (excludes completed todos older than 1 week)
- `GET /api/todos` - Get all todos
- `POST /api/todos` - Create a new todo
- `PUT /api/todos/{id}` - Update a todo
- `DELETE /api/todos/{id}` - Delete a todo
All endpoints require authentication.
## Todo Features
- Add, edit, and delete todos
- Mark todos as completed with timestamps
- Sort todos: incomplete (older first) at top, completed at bottom
- Filter: Hide completed todos older than 1 week (show via button)
- Each user has their own todos (multi-tenant)
## Configuration
### Keycloak
The application is configured to use Keycloak at `https://terminus.bluelake.cloud/` with:
- Realm: `dalex-immo-dev`
- Client ID: `dalex-proto`
### Ports
- Frontend: 3030
- Backend: 5050
## License
MIT
## Deployment
For deploying Docker images to the Gitea package registry at https://brokkr.robotico.dev/dalex/-/packages:
1. Install Python dependencies: `pip install -r requirements.txt`
2. Create `.env` file with your `PUBLISH_TOKEN` (see ENV_SETUP.md)
3. Run: `python deploy.py`
See [DEPLOYMENT.md](DEPLOYMENT.md) for detailed instructions.
## Development
Before deployment, create a `.env` file in the project root:
```bash
PUBLISH_TOKEN=your_gitea_token_here
```
See `.env.example` for template. The `.env` file is git-ignored and will never be overwritten.