Week #2 #
Week 2 - Choosing the Tech Stack, Designing the Architecture #
Tech Stack Selection #
For the current project our team has decided to use the next tech stack: ReactJS, Kotlin, FastAPI, PostgreSQL, Docker, GitHub Actions.
Architecture Design #
Component Breakdown:
ReactJS for frontend website design
Kotlin Multiplatform, Compose Multiplatform, Ktor, Kodein, Decompose + MviKotlin for mobile development
FastAPI for backend development
PostgreSQL for data storage
Docker for deployment
GitHub Actions for testing.
Data Management: PostgreSQL
User Interface (UI) Design: Figma
Integration and APIs: FastAPI for backend development
Scalability and Performance: Trello deck for checking the task completion
Security and Privacy: 1FA for user authentification
Error Handling and Resilience: Unit tests & GitHub Actions for CI/CD pipeline
Deployment and DevOps: Docker
Week 2 questionnaire: #
Tech Stack Resources: Tech Stack was chosen by discussing with other group members & searching for solutions through Google and YouTube
Mentorship Support: Our team have discussed the tech stack with our assigned TA and determined the main vector of our work for current week.
Exploring Alternative Resources: Searching solutions for the design through the internet, particularly from dribbble.com
Identifying Knowledge Gaps: Lack of knowlege in dockerizing the Alembic tool
Engaging with the Tech Community: Checking solutions for dockerizing Alembic on Stackowerflow & GitHub
Learning Objectives:
Efficient designing workflow through Figma
Projecting a created design in form of mobile application
Database structuring
Working with Alembic for database migration
Sharing Knowledge with Peers: Created the Trello deck for better task management
Leveraging AI: Used PyCharm AI assistant for improved autocompletion
Tech Stack and Team Allocation #
Team Member | Track | Responsibilities |
---|---|---|
Anton Chulakov | Designer | Design of the mobile application |
Denis Mikhailov | Web backend | Registration & authorization |
Arseny Savchenko | Mobile | Mobile application development |
Ilya Zubkov | Frontend | General structure creation |
Sergey Atkonov | Quality Assurance | Report |
Weekly Progress Report #
Design #
Current state of the application design:
Link for better acknowlegment with the design: https://www.figma.com/design/VutdYJEW7nxaz0BhGJExvL/Cooking-Recipe-App-design?node-id=0-1&t=UEvomQhrpfn9WVeD-1
Mobile #
Implemented core architectural aspects (UDF architecture with MVI pattern)
Implemented UI layer for Sign In / Sign Up for both mobile platforms
Implemented core business logic aspects for authorization (caching of login & password + network client implementation)
Implemented Unit test to check the connectivity of DI dependency graph during compile time (Kodein Service Locator library was used)
Web backend #
Implemented core architecture
Implemented login/register/logout endpoints
Configured launch of backend and database via docker-compose
Created general database structure and implemented orm models (User, Category, Tag and Recipe for now)
Challenges & Solutions #
Authentication was implemented, but needs testing. Unit tests should be created for future work; Alembic was hard to integrate with Docker: it required additional script for running it.
Conclusions & Next Steps #
In future our team will create
Functionality for recipes (creation, deletion, correcting, adding to favorites, tags creation)
Backend connection with mobile application, UI & authentication testing
Creating the user profile