# Dalex Todo Prototype A full-stack todo application with Vue3 frontend and ASP.NET Core backend, secured with Keycloak authentication. ## 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 ## 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, see [DEPLOYMENT.md](DEPLOYMENT.md). ## 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.