Files
uis-cloud-computing/design.md
2025-09-18 13:29:11 +02:00

150 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Design Document
> Keep this document brief (24 pages), clear, and up-to-date throughout the project.
> You may use Mermaid diagrams for architecture visuals.
| Field | Value (fill in) |
| -------------- |----------------------------------------|
| Project Name | Personal Finance Tracker |
| Team Members | Lukáš Trkan, Dejan Ribarovski |
| Repository URL | https://github.com/dat515-2025/Group-8 |
| Version | v0.1 (update as you iterate) |
| Last Updated | YYYY-MM-DD |
## How to use this template
- Replace all placeholders with your project-specific content.
- Keep explanations concise; link to code or docs when helpful.
- Update this document as the design evolves to match the final implementation.
---
## 1. Overview
Briefly describe the application and its purpose.
- Problem statement: What problem are you solving?
- Keeping track of all personal finances across multiple bank accounts, cash is not easy. We want to simplify it.
- Target users / personas: Who benefits from this?
- We aim to help people to keep better track of their finance flows, so people can plan bigger expenses or find ways to save money.
- Primary objectives: 35 bullet points.
- Pass th
- Non-goals: What is explicitly out of scope?
- Key features: Short bullet list of core functionality.
## 2. Architecture
High-level architecture, main components, interactions, and data flow. Include a system diagram.
### 2.1 System diagram
```mermaid
flowchart LR
client[Client/UI] --> api[API Gateway / Web Server]
api --> svc1[Service A]
api --> svc2[Service B]
svc1 --> db[(Database)]
svc2 --> cache[(Cache)]
svc2 --> ext[(External API)]
```
- Components and responsibilities: What does each box do?
- Data flow: How does data move between components?
- State management: Where is state stored (DB, cache, object store)?
- External dependencies: APIs, third-party services, webhooks.
### 2.2 Data model (if applicable)
- Core entities and relationships (ER sketch or brief description).
- Example records or schemas (link to files or include concise snippets).
- Users, Transactions, Transaction_Categories, User_settings
### 2.3 APIs (REST/gRPC/GraphQL)
- Swagger
## 3. Technologies
List the cloud services, libraries, and tools you will use and why.
| Technology / Service | Role / Where Used | Why chosen (brief) | Alternatives considered |
| -------------------- | ----------------- | ------------------ | ----------------------- |
| Python | Back-End | Simplest for both of us | Java, C#, PHP |
| React | Front-End | Most popular, we dont have exp with FE | Vue, plain JS |
| REST | BE<->FE API | Simplest | GraphQL |
| MariaDB | Database | Prior experience | PostgreSQL, CockroachDB |
| Redis | Cache | Prior experience | Valkey, Memcached |
| RabbitMQ | Message queue | Prior experience | MQTT, Redis |
| Python Fast API | API Framework | Simplicity | Flask, Django |
| Open Tofu | Cluster deployment | Prior experience | Terraform |
| Talos Cluster | Deployment | Why not | Docker swarn, RKE |
Notes:
- Languages & frameworks (e.g., Go, Node, Python; Gin, Fiber, Echo).
- Cloud provider and managed services (compute, DB, storage, messaging).
- CI/CD, IaC, containerization.
## 4. Deployment
Describe the deployment strategy and infrastructure requirements.
- Environments: dev / staging / prod (if applicable).
- Runtime platform: Docker, Compose, Kubernetes, serverless, PaaS.
- Infrastructure diagram (optional):
```mermaid
flowchart TB
subgraph Cloud
lb[Load Balancer]
asg[Service / Deployment]
db[(Managed DB)]
bucket[(Object Storage)]
end
user((User)) --> lb --> asg --> db
asg --> bucket
```
- Configuration & secrets: Env vars, secret manager, .env files (never commit secrets).
- Build & release: How artifacts are built; link to CI/CD if used.
- Deployment steps: Summarize here; full, reproducible steps must be in report.md.
- Scaling strategy: Horizontal/vertical scaling, autoscaling triggers.
---
## Optional Sections
Include the sections below as applicable to your project.
### Security
- Authn/Authz model; data protection; TLS/HTTPS; secrets handling; dependency scanning.
### Scalability
- Expected load; performance targets; bottlenecks; caching; rate limits.
### Monitoring & Logging
- Health checks; logs; metrics (e.g., Prometheus); dashboards; alerting.
### Disaster Recovery
- Backups; restore procedures; RPO/RTO targets; failure scenarios.
### Cost Analysis
- Main cost drivers; pricing model; cost-saving measures; budget estimate.
### References
- Links to papers, docs, blog posts, prior art, and any external resources.
---
## Change Log
- v0.1 Initial draft
- v0.2 Architecture updated to match implementation
- v1.0 Final version reflecting delivered system