Week2

Week #2 #

Week 2 - Choosing the Tech Stack, Designing the Architecture #

Tech Stack Selection #

Development Tool #

  • Mobile Development: Flutter
  • Version Control: Git
  • Prototyping and Design: Figma
  • Deployment: Docker
  • Backend Development: Golang
  • Data Storage: PostgreSQL
  • Data Storage: S3 Object Storage

Architecture Design #

Component Breakdown #

  • Frontend (Mobile Application): Flutter for user interactions.
  • Backend: Golang, Docker for app logic.
  • Database: PostgreSQL for data management.

Data Management #

PostgreSQL will be used to handle data storage, ensuring efficient data retrieval and manipulation.

User Interface (UI) Design #

Figma will be employed for designing user interfaces, ensuring a smooth and user-friendly experience.

Integration and APIs #

APIs will be developed to facilitate communication between the frontend and backend components, ensuring seamless data flow.

Scalability and Performance #

Our tech stack is chosen to ensure scalability and high performance, with Docker aiding in consistent deployment and Golang providing efficient backend performance.

Security and Privacy #

Robust authentication systems will be implemented to ensure secure access to study materials, restricting access to authorized users from respective universities.

Error Handling and Resilience #

We will implement comprehensive error handling mechanisms in both the frontend and backend to ensure the application is resilient and user-friendly.

Deployment and DevOps #

Git will be used for version control, and Docker will manage deployment, ensuring continuous integration and delivery.

Week 2 Questionnaire #

Tech Stack Resources #

We have gathered sufficient resources and documentation for our chosen tech stack, ensuring all team members are well-equipped to handle their tasks. We will be using a range of technical resources to support our development process:

  • Postman for API testing and debugging
  • GanttPro for project management and timeline tracking
  • Figma for UI/UX design and prototyping
  • Git for version control and code collaboration
  • Docker for containerization and deployment

Mentorship Support #

  • Mentor: No mentor currently involved.
  • Seeking Mentorship: Do not plan to seek a mentor. We have the expertise required for the project development.
  • Expert Engagement: Experts will be engaged situationally as needed to provide guidance, offer assistance, and give feedback on various aspects of the project.

Exploring Alternative Resources #

Teaching materials from the testing course, methodological materials on design from Google, introductory guide to Docker, introductory guide to flutter and introductory guide to GO

Identifying Knowledge Gaps #

Regular assessments and guesses during team communications and meetings help identify knowledge gaps, which can be addressed through pair programming and additional learning resources, as well as through networking with people you know who work in and understand different areas.

Engaging with the Tech Community #

Our team actively communicates in technical communities (Telegram, Discord, Slack, etc.), with IT professionals and other teams, finding such interaction useful for sharing knowledge and solving problems.

Learning Objectives #

Our focus is on deepening our understanding of software engineering through practice and collaboration in solving complex problems, and gaining experience in completing a given assignment.

Sharing Knowledge with Peers #

We share our knowledge and ideas with other teams and acquaintances in the IT field through online and offline communication, as well as with each other during joint meetings.

Leveraging AI #

An AI-powered text enhancement feature is planned for note creation/editing, allowing users to improve the structure, grammar, and style of their notes with a simple toggle option.

Tech Stack and Team Allocation #

Team MemberTrackResponsibilities
Mikhail ZiminDevOps, DesignFigma, Docker, overseeing design and deployment
Daria ShibkovaProject Management, TestingGit, Postman, GanttPro, coordinating project tasks and testing
Lev RyskildinAnalystPython, Git, conducting data analysis and ensuring data integrity
Adel ShagalievFrontendFlutter, developing user interfaces
Nikita ShlyakhtinBackendGolang, PostgreSQL, Docker, managing backend development and database integration

Weekly Progress Report #

Our team has successfully finalized our technology stack, defined the project architecture, and assigned team responsibilities. Moreover, we started developing a prototype, first design, backend. We are in the process of identifying knowledge gaps and planning mentorships to support our development.

Challenges & Solutions #

  • Challenge: Difficulty in combining writing a prototype and filling in missing knowledge

  • Solution: We improved time management, at the beginning we started to replenish knowledge more, then we resumed testing

  • Challenge: The initial design was supplemented several times, but in the end it turned out to be simple even to begin with, despite the fact that they were focused more on architecture

  • Solution: We decided to leave it until full development began, then change and add to it over the course of weeks

  • Challenge: Selecting the simplest and most convenient programming languages

  • Solution: We took Go for faster and more stable work, and also settled on Flutter due to a simpler approach to creating applications

Conclusions & Next Steps #

Our upcoming tasks include starting a full development phase, writing the backend, frontend, finalizing the design and functionality, starting testing, and continuing our training and knowledge sharing activities.