mirror of
https://github.com/dat515-2025/Group-8.git
synced 2026-03-22 06:57:47 +01:00
Compare commits
6 Commits
3557b3ea13
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16f660ea5b | ||
| 7a0d7dc4af | |||
| fabdff3bef | |||
| 1c1130b9b0 | |||
| 7d7698450d | |||
|
|
db9092b78f |
@@ -7,64 +7,65 @@ Focus on areas that align with your project goals and interests.
|
||||
The core deliverables are required.
|
||||
This means that you must get at least 2 points for each item in this category.
|
||||
|
||||
| **Category** | **Item** | **Max Points** | **Points** | **Comments** |
|
||||
|----------------------------------|-----------------------------------------|----------------|-------------------------------------------------|--------------|
|
||||
| **Core Deliverables (Required)** | | | | |
|
||||
| Codebase & Organization | Well-organized project structure | 5 | 5 | |
|
||||
| | Clean, readable code | 5 | 4 | |
|
||||
| | Use planning tool (e.g., GitHub issues) | 5 | 4 | |
|
||||
| | Proper version control usage | 5 | 5 | |
|
||||
| 23 | Complete source code | 5 | 5 | |
|
||||
| Documentation | Comprehensive reproducibility report | 10 | 4-5 | |
|
||||
| | Updated design document | 5 | 2 | |
|
||||
| | Clear build/deployment instructions | 5 | 2 | |
|
||||
| | Troubleshooting guide | 5 | 1 | |
|
||||
| | Completed self-assessment table | 5 | 2 | |
|
||||
| 14 | Hour sheets for all members | 5 | 3 | |
|
||||
| Presentation Video | Project demonstration | 5 | 0 | |
|
||||
| | Code walk-through | 5 | 0 | |
|
||||
| 0 | Deployment showcase | 5 | 0 | |
|
||||
| **Technical Implementation** | | | | |
|
||||
| Application Functionality | Basic functionality works | 10 | 8 | |
|
||||
| | Advanced features implemented | 10 | 0 | |
|
||||
| | Error handling & robustness | 10 | 4 | |
|
||||
| 16 | User-friendly interface | 5 | 4 | |
|
||||
| Backend & Architecture | Stateless web server | 5 | 5 | |
|
||||
| | Stateful application | 10 | ? WHAT DOES THIS MEAN | |
|
||||
| | Database integration | 10 | 10 | |
|
||||
| | API design | 5 | 5 | |
|
||||
| 20 | Microservices architecture | 10 | 0 | |
|
||||
| Cloud Integration | Basic cloud deployment | 10 | 10 | |
|
||||
| | Cloud APIs usage | 10 | ? WHAT DOES THIS MEAN | |
|
||||
| | Serverless components | 10 | 0 | |
|
||||
| 10 | Advanced cloud services | 5 | 0 | |
|
||||
| **DevOps & Deployment** | | | | |
|
||||
| Containerization | Basic Dockerfile | 5 | 5 | |
|
||||
| | Optimized Dockerfile | 5 | 0 | |
|
||||
| | Docker Compose | 5 | 5 - dev only | |
|
||||
| 15 | Persistent storage | 5 | 5 | |
|
||||
| Deployment & Scaling | Manual deployment | 5 | 5 | |
|
||||
| | Automated deployment | 5 | 5 | |
|
||||
| | Multiple replicas | 5 | 5 | |
|
||||
| 20 | Kubernetes deployment | 10 | 10 | |
|
||||
| **Quality Assurance** | | | | |
|
||||
| Testing | Unit tests | 5 | 2 | |
|
||||
| | Integration tests | 5 | 2 | |
|
||||
| | End-to-end tests | 5 | 5 | |
|
||||
| 9 | Performance testing | 5 | 0 | |
|
||||
| Monitoring & Operations | Health checks | 5 | 5 | |
|
||||
| | Logging | 5 | 2 - only to terminal add logstash | |
|
||||
| 9 | Metrics/Monitoring | 5 | 2 - only DB, need to create Prometheus endpoint | |
|
||||
| Security | HTTPS/TLS | 5 | 5 | |
|
||||
| | Authentication | 5 | 5 | |
|
||||
| 15 | Authorization | 5 | 5 | |
|
||||
| **Innovation & Excellence** | | | | |
|
||||
| Advanced Features and | AI/ML Integration | 10 | 0 | |
|
||||
| Technical Excellence | Real-time features | 10 | 0 | |
|
||||
| | Creative problem solving | 10 | ? | |
|
||||
| | Performance optimization | 5 | 2 | |
|
||||
| 2 | Exceptional user experience | 5 | 0 | |
|
||||
| **Total** | | **255** | **153** | |
|
||||
| **Category** | **Item** | **Max Points** | **Points** | **Comment** |
|
||||
|:---------------------------------|:----------------------------------------|:---------------|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| **Core Deliverables (Required)** | | | | |
|
||||
| Codebase & Organization | Well-organized project structure | 5 | 5 | Project is well-organized, each part is separated (backend, frontend, IaC) and these parts are separated even mode (modules, packages...) |
|
||||
| | Clean, readable code | 5 | 4 | Should be readable(function names should help), but readability can always be improved |
|
||||
| | Use planning tool (e.g., GitHub issues) | 5 | 4 | We used Github issues |
|
||||
| | Proper version control usage | 5 | 5 | We used branches for development, pull request reviews |
|
||||
| 23 | Complete source code | 5 | 5 | The code is complete - entire codebase is in this repository |
|
||||
| Documentation | Comprehensive reproducibility report | 10 | 10 | Our report is precise, anybody should be able to reproduce our deployment by following provided instructions |
|
||||
| | Updated design document | 5 | 4 | Our design document was updated and merged into the report |
|
||||
| | Clear build/deployment instructions | 5 | 5 | Should be clear |
|
||||
| | Troubleshooting guide | 5 | 3 | When it comes to troubleshooting, there is never enough documentation |
|
||||
| | Completed self-assessment table | 5 | 5 | Completed. |
|
||||
| 32 | Hour sheets for all members | 5 | 5 | Filled. |
|
||||
| Presentation Video | Project demonstration | 5 | 5 | Yes |
|
||||
| | Code walk-through | 5 | 3 | There was not enough time to go through all of our code, so we just mentioned some parts of it. |
|
||||
| 13 | Deployment showcase | 5 | 5 | Yes |
|
||||
| **Technical Implementation** | | | | |
|
||||
| Application Functionality | Basic functionality works | 10 | 10 | The app works as intended |
|
||||
| | Advanced features implemented | 10 | 5 | OAuth, BankAPI connection (not only mock bank) |
|
||||
| | Error handling & robustness | 10 | 5 | App notifies user about errors, errors in code are also logged by sentry and we get notified |
|
||||
| 24 | User-friendly interface | 5 | 4 | Responsive interface with dark mode support, should by user friendly enough |
|
||||
| Backend & Architecture | Stateless web server | 5 | 5 | Yes, the web server is stateless - authentication uses JWT, not sessions. |
|
||||
| | Stateful application | 10 | 10 | Yes, the app is stateful - data are persistently stored in database |
|
||||
| | Database integration | 10 | 10 | We have deployed 3 MariaDB nodes with replication, MaxScale proxy and periodic backups. Connection app with this setup is same as with standalone db. |
|
||||
| | API design | 5 | 5 | Backend APIs are implemented with public Swagger docs |
|
||||
| 33 | Microservices architecture | 10 | 3 | We have separated API deployment and worker deployment. Worker process slow tasks - emails, payment scraping. There is no need for another service in current state but adding it is easy. |
|
||||
| Cloud Integration | Basic cloud deployment | 10 | 10 | Yes (In private cluster), using GH Actions and self-hosted runner. |
|
||||
| | Cloud APIs usage | 10 | 8 | GH Actions deploys frontend to Cloudflare Pages, deployment creates CF tunnel record automatically |
|
||||
| | Serverless components | 10 | 10 | We are using CF pages for frontend deployment |
|
||||
| 33 | Advanced cloud services | 5 | 5 | Using CF provides us with DDOS protection, access rules, it hides our IP |
|
||||
| **DevOps & Deployment** | | | | |
|
||||
| Containerization | Basic Dockerfile | 5 | 5 | Yes |
|
||||
| | Optimized Dockerfile | 5 | 5 | Rootless Dockerfile |
|
||||
| | Docker Compose | 5 | 5 | For development environment |
|
||||
| 20 | Persistent storage | 5 | 5 | Yes, using Longhorn. |
|
||||
| Deployment & Scaling | Manual deployment | 5 | 5 | Yes, possible by using Helm manually |
|
||||
| | Automated deployment | 5 | 5 | Yes, with Github actions |
|
||||
| | Multiple replicas | 5 | 5 | Yes, 3 pods with API, 3 pods with workers, 3 database pods |
|
||||
| 25 | Kubernetes deployment | 10 | 10 | Yes |
|
||||
| **Quality Assurance** | | | | |
|
||||
| Testing | Unit tests | 5 | 4 | All workflows are covered by tests |
|
||||
| | Integration tests | 5 | 5 | Yes |
|
||||
| | End-to-end tests | 5 | 5 | Yes |
|
||||
| 14 | Performance testing | 5 | 0 | No |
|
||||
| Monitoring & Operations | Health checks | 5 | 5 | Yes |
|
||||
| | Logging | 5 | 4 | Logs can be accessed easily using Grafana |
|
||||
| | Metrics/Monitoring | 2 | 2 | Yes, visualised in Grafana |
|
||||
| 14 | Custom Metrics for your project | 3 | 3 | Yes, API has /metrics endpoint providing information about FastAPI itself and custom information such as number of users or transactions. |
|
||||
| Security | HTTPS/TLS | 5 | 5 | Yes |
|
||||
| | Authentication | 5 | 5 | Yes |
|
||||
| 15 | Authorization | 5 | 5 | Yes |
|
||||
| **Innovation & Excellence** | | | | |
|
||||
| Advanced Features and | AI/ML Integration | 10 | 0 | No |
|
||||
| Technical Excellence | Real-time features | 10 | 0 | No |
|
||||
| | Creative problem solving | 10 | 4 | Cron jobs for bank scraping |
|
||||
| | Performance optimization | 5 | 4 | Delegating emails and scraping to workers, hosting frontend on CF |
|
||||
| 11 | Exceptional user experience | 5 | 3 | |
|
||||
| **Total** | | **255** | **257** | |
|
||||
|
||||
## Grading Scale
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ flowchart TB
|
||||
svc <-- HTTP request/response --> api[("UniRate API")]
|
||||
client <-- HTTP request/response --> n2
|
||||
```
|
||||
|
||||
The workflow works in the following way:
|
||||
|
||||
- Client connects to the frontend. After login, frontend automatically fetches the stored transactions from
|
||||
@@ -575,16 +576,16 @@ npm run dev in 7project/src/frontend
|
||||
|
||||
## Presentation Video
|
||||
|
||||
**YouTube Link**: [Insert your YouTube link here]
|
||||
**YouTube Link**: https://youtu.be/FKR85AVN8bI
|
||||
|
||||
**Duration**: [X minutes Y seconds]
|
||||
**Duration**: 9 minutes 43 seconds
|
||||
|
||||
**Video Includes**:
|
||||
|
||||
- [ ] Project overview and architecture
|
||||
- [ ] Live demonstration of key features
|
||||
- [ ] Code walkthrough
|
||||
- [ ] Build and deployment showcase
|
||||
- [x] Project overview and architecture
|
||||
- [x] Live demonstration of key features
|
||||
- [x] Code walkthrough
|
||||
- [x] Build and deployment showcase
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
@@ -666,7 +667,7 @@ kubectl exec -it <pod-name> -n prod -- /bin/bash
|
||||
| [Cloud Deployment](https://github.com/dat515-2025/Group-8/pull/16) | Both | ✅ Complete | 21 hours | Hard | |
|
||||
| [Testing Implementation](https://github.com/dat515-2025/Group-8/pull/31/) | Both | ✅ Complete | 21 hours | Medium | |
|
||||
| [Documentation](https://github.com/dat515-2025/Group-8/commit/515106b238bc032d5f7d5dcae931b5cb7ee2a281) | Both | ✅ Complete | 14 hours | Medium | |
|
||||
| [Presentation Video](https://github.com/dat515-2025/group-name) TODO | Both | Started | 3 hours | Medium | |
|
||||
| [Presentation Video](https://youtu.be/FKR85AVN8bI) | Both | ✅ Complete | 3 hours | Medium | |
|
||||
|
||||
## Hour Sheet
|
||||
|
||||
@@ -687,8 +688,9 @@ kubectl exec -it <pod-name> -n prod -- /bin/bash
|
||||
| 9.11. | Monitoring | 2 | Added custom Prometheus metrics | `PR #46` (Prometheus custom metrics) |
|
||||
| 11.11. | Tests | 1 | Investigated and fixed broken Pytest environment | `fix(tests): set pytest env` |
|
||||
| 11.11. - 12.11. | Features & Deployment | 6 | Added cron support, email sender service, updated workers & image | `PR #49` (Email), `PR #50` (Update workers) |
|
||||
| 18.9 - 14.11 | Documentation | 8 | Updated report.md, design docs, and tfvars.example | `Create design.md`, `update report` |
|
||||
| **Total** | | **105** | | |
|
||||
| 18.9 - 16.11 | Documentation | 8 | Updated report.md, design docs, and tfvars.example | `Create design.md`, `update report` |
|
||||
| 15.11 | Video | 2 | Record my video part, edit video | |
|
||||
| **Total** | | **107** | | |
|
||||
|
||||
### Dejan
|
||||
|
||||
@@ -710,7 +712,7 @@ kubectl exec -it <pod-name> -n prod -- /bin/bash
|
||||
| 25.9. to 14.11. | Documentation | 8 | Documenting the dev process | multiple `feat(docs): report.md update` |
|
||||
| **Total** | | **87** | | |
|
||||
|
||||
### Group Total: 192 hours
|
||||
### Group Total: 194 hours
|
||||
|
||||
---
|
||||
|
||||
@@ -799,5 +801,5 @@ more efficiently.
|
||||
|
||||
---
|
||||
|
||||
**Report Completion Date**: [Date]
|
||||
**Last Updated**: 13.11.2025
|
||||
**Report Completion Date**: 15.11.2025
|
||||
**Last Updated**: 15.11.2025
|
||||
@@ -1,8 +1,16 @@
|
||||
FROM python:3.11-trixie
|
||||
FROM python:3.11-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN useradd --create-home --shell /bin/bash app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . .
|
||||
RUN chown -R app:app /app
|
||||
|
||||
USER app
|
||||
|
||||
EXPOSE 8000
|
||||
CMD ["sh", "-c", "alembic upgrade head && uvicorn app.app:fastApi --host 0.0.0.0 --port 8000"]
|
||||
|
||||
61
todo.md
Normal file
61
todo.md
Normal file
@@ -0,0 +1,61 @@
|
||||
- sentry for error tracking
|
||||
|
||||
- github actions for ci/cd
|
||||
- deployment using helmchart, prod + dev
|
||||
- celery background tasks
|
||||
- cron
|
||||
- cloudflare tunnels
|
||||
- mariadb operator for database, maxscale 3 nodes, phpmyadmin, maxscale ui, backups
|
||||
- prometheus + grafana dashboards for monitoring
|
||||
- rabbitmq message queue
|
||||
- longhorn for file storage (edited talosos deployment)
|
||||
|
||||
Aplikace:
|
||||
|
||||
- umíme oauth - mojeid, bankid => oboje se používá i pro autorizaci komunikace s CZ státem
|
||||
- automatický import plateb z banky
|
||||
- ukázat frontend
|
||||
- ukázat backend - oauth, celery tasky,
|
||||
- alembic na migrace db
|
||||
- sentry integrace
|
||||
|
||||
Infrastruktura:
|
||||
|
||||
- běžíme na proxmoxu
|
||||
- kubernetes cluster přes TalosOS jako virtuálky with edited configs
|
||||
- deployment služeb přes tofu/terraform
|
||||
- longhorn pro persistentní storage
|
||||
- mariadb operator s maxscale - 3 nody + phpmyadmin
|
||||
- prometheus + grafana monitoring
|
||||
- rabbitmq message queue pro background tasky
|
||||
- veřejný přístup přes cloudflare tunnels
|
||||
- ukázat headlamp map
|
||||
- build v github actions
|
||||
- deployment pomocí helmchartu prod + dev prostředí pomocí selfhosted runneru
|
||||
- remote access do clusteru přes tailscale
|
||||
-
|
||||
|
||||
Where to put description of infrastructure components? for example Helm chart of app is quite large
|
||||
How about readme?
|
||||
|
||||
linking commits in time table? I cant link all of them - many of them was directly to main branch
|
||||
|
||||
- for example iterative CI/CD setup
|
||||
|
||||
done
|
||||
create src in 7project
|
||||
make the chart vertical
|
||||
urls as hyperlinks text
|
||||
frontned npm run dev as codeblock
|
||||
describe folder structure in readme in 7project
|
||||
add comment column to checklist
|
||||
readme in src folder with folder structure description
|
||||
readme in src/tofu
|
||||
readme in src/charts
|
||||
add link to report for app
|
||||
write few lines in Build intructrions, deployment instructions like in testing
|
||||
|
||||
|
||||
add other services in cluster in report architecture overview
|
||||
|
||||
debug commands - kubectl logs -f podname, mention grafana
|
||||
Reference in New Issue
Block a user