From f1034f6ed57a0366c17540c2515c10491daf3b3e Mon Sep 17 00:00:00 2001 From: ribardej Date: Fri, 14 Nov 2025 17:23:55 +0100 Subject: [PATCH] feat(docs): report.md update --- 7project/report.md | 92 ++++++++++++++++++++++++--------- 7project/src/frontend/README.md | 86 ++++++------------------------ 2 files changed, 84 insertions(+), 94 deletions(-) diff --git a/7project/report.md b/7project/report.md index e881ae4..b3f9602 100644 --- a/7project/report.md +++ b/7project/report.md @@ -526,6 +526,7 @@ npm run dev in 7project/src/frontend ## Troubleshooting + ### Common Issues #### Issue 1: Unable to apply Cloudflare terraform module @@ -550,10 +551,29 @@ by either hitting docker hub rate limits or by docker hub being down. ### Debug Commands +Get a detailed description of the Deployment: ```bash -# Useful commands for debugging -# Log viewing commands -# Service status checks +kubectl describe deployment finance-tracker -n prod +``` + +Get a list of pods in the Deployment: +```bash +kubectl get pods -n prod +``` + +Check the logs of a specific pod copy value for from the command above (--previous flag shows logs of a failing pod, remove it if the pod is not failing): +```bash +kubectl logs -n prod --previous +``` + +See the service description: +```bash +kubectl describe service finance-tracker -n prod +``` + +Connect to the pod and run a bash shell: +```bash +kubectl exec -it -n prod -- /bin/bash ``` --- @@ -566,9 +586,9 @@ by either hitting docker hub rate limits or by docker hub being down. | Task/Component | Assigned To | Status | Time Spent | Difficulty | Notes | |-------------------------------------------------------------------------------------------------------------------|-------------|----------------|------------|------------|-----------------------------------------------------------------------------------------------------| -| [Project Setup & Repository](https://github.com/dat515-2025/Group-8#) | Lukas | ✅ Complete | [X hours] | Medium | [Any notes] | +| [Project Setup & Repository](https://github.com/dat515-2025/Group-8#) | Lukas | ✅ Complete | 40 Hours | Medium | [Any notes] | | [Design Document](https://github.com/dat515-2025/Group-8/blob/main/6design/design.md) | Both | ✅ Complete | 4 Hours | Easy | [Any notes] | -| [Backend API Development](https://github.com/dat515-2025/Group-8/tree/main/7project/backend/app/api) | Dejan | ✅ Complete | 12 hours | Medium | [Any notes] | +| [Backend API Development](https://github.com/dat515-2025/Group-8/tree/main/7project/backend/app/api) | Dejan | ✅ Complete | 14 hours | Medium | [Any notes] | | [Database Setup & Models](https://github.com/dat515-2025/Group-8/tree/main/7project/backend/app/models) | Lukas | ✅ Complete | [X hours] | Medium | [Any notes] | | [Frontend Development](https://github.com/dat515-2025/Group-8/tree/main/7project/frontend) | Dejan | ✅ Complete | 17 hours | Medium | [Any notes] | | [Docker Configuration](https://github.com/dat515-2025/Group-8/blob/main/7project/compose.yml) | Lukas | ✅ Complete | 3 hours | Easy | [Any notes] | @@ -609,24 +629,26 @@ by either hitting docker hub rate limits or by docker hub being down. ### Dejan -| Date | Activity | Hours | Description | Representative Commit / PR | -|:----------------|:---------------------|:-------|:--------------------------------------------------------------|:---------------------------------------------------------| -| 25.9. | Design | 2 | 6design | | -| 9.10 to 11.10. | Backend APIs | 14 | Implemented Backend APIs | `PR #26`, `20-create-a-controller-layer-on-backend-side` | -| 13.10 to 15.10. | Frontend Development | 8 | Created user interface mockups | `PR #28`, `frontend basics` | -| Continually | Documentation | 7 | Documenting the dev process | | -| 21.10 to 23.10 | Tests, frontend | 10 | Test basics, balance charts, and frontend improvement | `PR #31`, `30 create tests and set up a GitHub pipeline` | -| 28.10 to 30.10 | CI | 6 | Integrated tests with test database setup on github workflows | `PR #28`, `frontend basics` | -| 28.10 to 30.10 | Frontend | 8 | UI improvements and exchange rate API integration | `PR #28`, `frontend basics` | -| 4.11 to 6.11 | Tests | 6 | Test fixes improvement, more integration and e2e | `PR #28`, `frontend basics` | -| 4.11 to 6.11 | Frontend | 6 | Fixes, Improved UI, added support for mobile devices | `PR #28`, `frontend basics` | -| 11.11 | Backend APIs | 4 | Moved rates API, mock bank to Backend, few fixes | `PR #28`, `frontend basics` | -| 11.11 to 12.11 | Tests | 3 | Local testing DB container, few fixes | `PR #28`, `frontend basics` | -| 12.11 | Frontend | 3 | Enabled multiple transaction edits at once, CSAS button state | `PR #28`, `frontend basics` | -| 13.11 | Video | 3 | Video | | -| **Total** | | **80** | | | +| Date | Activity | Hours | Description | Representative Commit / PR | +|:-----------------|:---------------------|:-------|:----------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------| +| 25.9. | Design | 2 | 6design | | +| 9.10. to 11.10. | Backend APIs | 14 | Implemented Backend APIs | `PR #26`, `20-create-a-controller-layer-on-backend-side` | +| 13.10. to 15.10. | Frontend Development | 8 | Created user interface mockups | `PR #28`, `frontend basics` | +| 21.10. to 23.10. | Tests, frontend | 10 | Test basics, balance charts, and frontend improvement | `PR #31`, `30 create tests and set up a GitHub pipeline` | +| 28.10. to 30.10. | CI/CD | 6 | Integrated tests with test database setup on github workflows | `PR #31`, `30 create tests and set up a GitHub pipeline` | +| 28.10. to 30.10. | Frontend | 8 | UI improvements and exchange rate API integration | `PR #35`, `34 improve frontend functionality` | +| 29.10. | Backend | 4 | Token invalidation, few fixes | `PR #38`, `fix(backend): implemented jwt token invalidation so users cannot use …` | +| 4.11. to 6.11. | Tests | 6 | Test fixes improvement, more integration and e2e | `PR #45`, `feat(test): added more tests ` | +| 4.11. to 6.11. | Frontend | 8 | Fixes, rates API, Improved UI, added support for mobile devices | `PR #41, #44`, `feat(frontend): added CNB API and moved management into a new tab`, `43 fix the UI layout in chrome ` | +| 11.11. | Backend APIs | 4 | Moved rates API, mock bank to Backend, few fixes | `feat(backend): Moved the unirate API to the backend `, `feat(backend): moved mock bank to backend` | +| 11.11. to 12.11. | Tests | 3 | Local testing DB container, few fixes | `PR #48`, `fix(tests): fixed test runtime errors regarding database connection ` | +| 12.11. | Frontend | 3 | Enabled multiple transaction edits at once, CSAS button state | `feat(frontend): implemented multiple transaction selections in UI` | +| 13.11. | Video | 3 | Video | | +| 25.9. to 14.11. | Documentation | 8 | Documenting the dev process | multiple `feat(docs): report.md update` | +| **Total** | | **87** | | | -### Group Total: [XXX.X] hours + +### Group Total: 192 hours --- @@ -634,7 +656,13 @@ by either hitting docker hub rate limits or by docker hub being down. ### What We Learned -[Reflect on the key technical and collaboration skills learned during this project] +#### Technical +- We learned how to use AI to help us with our project. +- We learned how to use Copilot for PR reviews. +- We learned how to troubleshoot issues with our project in different areas. +#### Collaboration +- Weekly meetings with the TA were great for syncing up on progress, discussing issues, planning future work. +- Using GitHub issues and pull requests was very helpful for keeping track of progress. ### Challenges Faced @@ -648,6 +676,10 @@ If the deployed module (helm chart for example) was not configured properly, it namespace that cannot be deleted. This was solved by using snapshots in Proxmox and restoring if this happened. +#### Not enough time to implement all features +Since this course is worth only 5 credits, we often had to prioritize other courses we were attending over this project. +In the end, we were able to implement all necessary features. + ### If We Did This Again #### Different framework @@ -661,6 +693,10 @@ Using .NET (which we considered initially) would probably solve these issues. Using private container registry would allow us to include environment variables directly in the image during build. This would simplify deployment and CI/CD setup. +#### Start sooner +The weekly meetings helped us to start planning the project earlier and avoid spending too much time on details, +but we could have started earlier if we had more time. + [What would you do differently? What worked well that you'd keep?] ### Individual Growth @@ -678,8 +714,14 @@ used not only by myself. #### [Dejan] -Since I do not have a job, this project was probably the most complex one I have ever worked on. -It was also the first school project where I was encouraged to use AI. +Since I do not have a job and I am more theoretically oriented student (I am more into math, algorithms, cryptography), this project was probably the most complex one I have ever worked on. +For me, it was a great experience to work on an actually deployed fullstack app and not only local development, that I was used to from the past. + +It was also a great experience to collaborate with Lukas who has prior experience with app deployment and infrastructure. +Thanks to this, I learned a lot new technologies and how to work in a team (First time reviewing PRs). + +It was challenging to wrap my head around the project structure and how everything was connected (And I still think I have some gaps in my knowledge). +But I think that if I decide to create my own demo project in the future, I will definitely be able to work on it much more efficiently. diff --git a/7project/src/frontend/README.md b/7project/src/frontend/README.md index d2e7761..556dc0c 100644 --- a/7project/src/frontend/README.md +++ b/7project/src/frontend/README.md @@ -1,73 +1,21 @@ # React + TypeScript + Vite -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. +This directory contains the frontend code. -Currently, two official plugins are available: +## Directory Structure -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## React Compiler - -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - -```js -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - - // Remove tseslint.configs.recommended and replace with this - tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - tseslint.configs.stylisticTypeChecked, - - // Other configs... - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` - -You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: - -```js -// eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' - -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - // Enable lint rules for React - reactX.configs['recommended-typescript'], - // Enable lint rules for React DOM - reactDom.configs.recommended, - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` +- `public/` - static files +- `src/` - frontend code + - `assets/` - static assets + - `pages/` - React pages + - `api.ts` - API client + - `App.tsx` - React app + - `main.tsx` - entry point + - `index.css` - global styles + - `config.ts` - configuration + - `ui.css` - UI styles +- `vite.config.ts` - Vite configuration +- `package.json` - NPM dependencies +- `tsconfig.json` - TypeScript configuration +- `index.html` - HTML template +-