update checklist

This commit is contained in:
2025-11-16 17:21:45 +01:00
parent 7d7698450d
commit 1c1130b9b0
2 changed files with 61 additions and 59 deletions

View File

@@ -7,65 +7,66 @@ Focus on areas that align with your project goals and interests.
The core deliverables are required. The core deliverables are required.
This means that you must get at least 2 points for each item in this category. This means that you must get at least 2 points for each item in this category.
| **Category** | **Item** | **Max Points** | **Points** | **Comment** | | **Category** | **Item** | **Max Points** | **Points** | **Comment** |
|:---------------------------------|:----------------------------------------|:---------------|:-----------|:----------------------------------------------------------------------------------------------------| |:---------------------------------|:----------------------------------------|:---------------|:-----------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Core Deliverables (Required)** | | | | | | **Core Deliverables (Required)** | | | | |
| Codebase & Organization | Well-organized project structure | 5 | 5 | Project is well-organized | | 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 | | | 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 | | | 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 | | | Proper version control usage | 5 | 5 | We used branches for development, pull request reviews |
| 23 | Complete source code | 5 | 5 | The code is complete | | 23 | Complete source code | 5 | 5 | The code is complete - entire codebase is in this repository |
| Documentation | Comprehensive reproducibility report | 10 | 8 | Our report is precise | | 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 | | | Updated design document | 5 | 4 | Our design document was updated and merged into the report |
| | Clear build/deployment instructions | 5 | 5 | Should be clear | | | Clear build/deployment instructions | 5 | 5 | Should be clear |
| | Troubleshooting guide | 5 | 3 | When it comes to troubleshooting, there is never enough documentation | | | Troubleshooting guide | 5 | 3 | When it comes to troubleshooting, there is never enough documentation |
| | Completed self-assessment table | 5 | 5 | Completed. | | | Completed self-assessment table | 5 | 5 | Completed. |
| 30 | Hour sheets for all members | 5 | 5 | Filled. | | 30 | Hour sheets for all members | 5 | 5 | Filled. |
| Presentation Video | Project demonstration | 5 | 5 | Yes | | Presentation Video | Project demonstration | 5 | 5 | Yes |
| | Code walk-through | 5 | 3 | There was not enough time to go through all of our code | | | 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 | | 13 | Deployment showcase | 5 | 5 | Yes |
| **Technical Implementation** | | | | | | **Technical Implementation** | | | | |
| Application Functionality | Basic functionality works | 10 | 10 | The app works as intended | | Application Functionality | Basic functionality works | 10 | 10 | The app works as intended |
| | Advanced features implemented | 10 | 5 | OAuth, BankAPI connection (not only mock bank) | | | Advanced features implemented | 10 | 5 | OAuth, BankAPI connection (not only mock bank) |
| | Error handling & robustness | 10 | 5 | The app should be robust enough for normal use (TODO Lukasi kdyztak oprav pls) | | | 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 | Could always be better | | 24 | User-friendly interface | 5 | 4 | Responsive interface with dark mode support, should by user friendly enough |
| Backend & Architecture | Stateless web server | 5 | 0 | Our server is stateful | | Backend & Architecture | Stateless web server | 5 | 0 | Our server is stateful TODO: v tomhle mám furt bordel |
| | Stateful application | 10 | 10 | Our server is stateful | | | Stateful application | 10 | 10 | Our server is stateful TODO: v tomhle mám furt bordel |
| | Database integration | 10 | 10 | Yes, db is integrated | | | 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 | | | API design | 5 | 5 | Backend APIs are implemented with public Swagger docs |
| 28 | Microservices architecture | 10 | 3 | Well not really but we have the app and the worker services divided (TODO Lukasi kdyztak oprav pls) | | 28 | 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) | | Cloud Integration | Basic cloud deployment | 10 | 10 | Yes (In private cluster), using GH Actions and self-hosted runner. |
| | Cloud APIs usage | 10 | 0 | Not Applicable (TODO Lukasi kdyztak oprav pls) | | | Cloud APIs usage | 10 | 8 | GH Actions deploys frontend to Cloudflare Pages, deployment creates CF tunnel record automatically |
| | Serverless components | 10 | 0 | No (TODO Lukasi kdyztak oprav pls) | | | Serverless components | 10 | 10 | We are using CF pages for frontend deployment |
| 10 | Advanced cloud services | 5 | 0 | Not Applicable (TODO Lukasi kdyztak oprav pls) | | 10 | Advanced cloud services | 5 | 5 | Using CF provides us with DDOS protection, access rules, it hides our IP |
| **DevOps & Deployment** | | | | | | **DevOps & Deployment** | | | | |
| Containerization | Basic Dockerfile | 5 | 5 | Yes | | Containerization | Basic Dockerfile | 5 | 5 | Yes |
| | Optimized Dockerfile | 5 | 0 | Not really (TODO Lukasi kdyztak oprav pls) | | | Optimized Dockerfile | 5 | 5 | Rootless Dockerfile |
| | Docker Compose | 5 | 5 | dev only | | | Docker Compose | 5 | 5 | For development environment |
| 15 | Persistent storage | 5 | 5 | Yes | | 15 | Persistent storage | 5 | 5 | Yes, using Longhorn. |
| Deployment & Scaling | Manual deployment | 5 | 5 | Yes, possible | | Deployment & Scaling | Manual deployment | 5 | 5 | Yes, possible by using Helm manually |
| | Automated deployment | 5 | 5 | Yes, withGithub runners | | | Automated deployment | 5 | 5 | Yes, with Github actions |
| | Multiple replicas | 5 | 5 | Yes (4) | | | Multiple replicas | 5 | 5 | Yes, 3 pods with API, 3 pods with workers, 3 database pods |
| 25 | Kubernetes deployment | 10 | 10 | Yes | | 25 | Kubernetes deployment | 10 | 10 | Yes |
| **Quality Assurance** | | | | | | **Quality Assurance** | | | | |
| Testing | Unit tests | 5 | 2 | Basic coverage | | Testing | Unit tests | 5 | 4 | All workflows is covered by tests |
| | Integration tests | 5 | 5 | Yes | | | Integration tests | 5 | 5 | Yes |
| | End-to-end tests | 5 | 5 | Yes | | | End-to-end tests | 5 | 5 | Yes |
| 12 | Performance testing | 5 | 0 | No | | 12 | Performance testing | 5 | 0 | No |
| Monitoring & Operations | Health checks | 5 | 5 | Yes | | Monitoring & Operations | Health checks | 5 | 5 | Yes |
| | Logging | 5 | 2 | only to terminal add logstash | | | Logging | 5 | 2 | Logs can be accessed easily using Grafana |
| | Metrics/Monitoring | 2 | 2 | Yes | | | Metrics/Monitoring | 2 | 2 | Yes, visualised in Grafana |
| 12 | Custom Metrics for your project | 3 | 3 | Prometheus, Grafana | | 12 | 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 | | Security | HTTPS/TLS | 5 | 5 | Yes |
| | Authentication | 5 | 5 | Yes | | | Authentication | 5 | 5 | Yes |
| 15 | Authorization | 5 | 5 | Yes | | 15 | Authorization | 5 | 5 | Yes |
| **Innovation & Excellence** | | | | | | **Innovation & Excellence** | | | | |
| Advanced Features and | AI/ML Integration | 10 | 0 | No | | Advanced Features and | AI/ML Integration | 10 | 0 | No |
| Technical Excellence | Real-time features | 10 | 0 | No | | Technical Excellence | Real-time features | 10 | 0 | No |
| | Creative problem solving | 10 | 4 | Cron jobs for bank scraping | | | Creative problem solving | 10 | 4 | Cron jobs for bank scraping |
| | Performance optimization | 5 | 3 | Delegating emails and scraping to workers | | | Performance optimization | 5 | 4 | Delegating emails and scraping to workers, hosting frontend on CF |
| 7 | Exceptional user experience | 5 | 0 | | | 7 | Exceptional user experience | 5 | 3 | |
| **Total** | | **255** | **214** | | | **Total** | | **255** | **214** | |
## Grading Scale ## Grading Scale
- **Minimum Required: 100 points** - **Minimum Required: 100 points**

View File

@@ -47,6 +47,7 @@ flowchart TB
svc <-- HTTP request/response --> api[("UniRate API")] svc <-- HTTP request/response --> api[("UniRate API")]
client <-- HTTP request/response --> n2 client <-- HTTP request/response --> n2
``` ```
The workflow works in the following way: The workflow works in the following way:
- Client connects to the frontend. After login, frontend automatically fetches the stored transactions from - Client connects to the frontend. After login, frontend automatically fetches the stored transactions from