114 lines
2.3 KiB
Markdown
114 lines
2.3 KiB
Markdown
# 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.
|