Project for sum-25 Go-Flutter course
We create a web application for track sleep periods of users, with rating system that uses sleep hours as a rating.
- Ekaterina Zhidkova, team leader, frontend-developer of screens, light/dark themes, and animations
- Anna Morozova, frontend-developer, working with connection of backend and frontend
- Anastasia Varfolomeeva, frontend-developer, is responsible for creating tests for Flutter
- Botalov Egor, backend-developer, working with API, database, JWT-based authentication and authorization
- Vsevolod Nazmudinov, DevOps, backend-developer, working with API, create Swagger documentation
- Dowload the Docker from [official website](official website), and remeber the login and password
- Clone the repo, run in cmd
git clone https://github.com/SleepTrackingApplication/SleepTrackingApplication - Go to the
SleepTrackingApplication-cd SleepTrackingApplication` - Go to the
backenddirectory -cd backend - Setup the
.envfile- Copy example files:
cp development.env.example development.env cp staging.env.example staging.env
- Edit the files with your local settings:
- Set your database password
- Generate a secure JWT key - for example:
kZs+3FeTR+Db1YGrEtBbpGe3hC7VOqdtD13KJUPUPLI= - Adjust ports if needed
- Get the dependencies -
go mod tidy - Run
docker compose up --build -dfor start the Docker - Get the dependencies -
flutter get pub - Go to the
frontenddirectory -cd ../frontend - Run
flutter run - Follow the instructions in the console
- The opened window is our application!
The project follows a client-server architecture and consists of three main components:
- Flutter Frontend – A cross-platform mobile and web application.
- Go Backend – A RESTful API providing business logic, authentication, and database interaction.
- PostgreSQL – A relational database used to store user and application data.
- The Flutter client communicates with the backend via HTTPS using RESTful API calls.
- The Go backend handles request routing, input validation, JWT-based authentication, and communicates with the PostgreSQL database.
- PostgreSQL stores all application data including users, objects, and their relationships.
- Swagger (OpenAPI) is used for generating interactive API documentation.
- All components are containerized and managed using Docker Compose.
- A CI/CD pipeline is used for automated builds, tests, and deployments.
- You can find the swagger API documentation at
http://localhost:8080/swagger/locally after running Docker
Postman documentation Link
Below the structure of PostgreSQL database, we use 1:N relationship becasue 1 user can have multiple sleep periods.
![]()
Board with task tracking Link
GitHub Actions Link
Source .yml file Link
- You can see rusult of tests in CI/CD pipeline
- Open cmd in directory of project
- run
cd backendin cmd - run
go test ./...in cmd - see the result of tesing in cmd
- run
cd frontendin cmd - run
flutter testin cmd - see the result of testing in cmd
- Go-based backend (3 points) Link
- RESTful API with Swagger documentation (2 points) Link Link
- PostgreSQL database with proper schema design (1 point) Link Schema design is in README.md
- JWT-based authentication and authorization (1 point) Link
- Comprehensive unit and integration tests (1 point) Link1 Link2 Link3 Link4
- Flutter-based cross-platform application (mobile + web) (3 points)
- Responsive UI design with custom widgets (1 point) Link (For example, LevitationAnimation, GentleRotationAnimation, and HoverScaleAnimation)
- State management implementation (1 point)
- Offline data persistence (1 point)
- Unit and widget tests (1 point) Link
- Support light and dark mode (1 point) Link (You can switch theme from user account)
- Docker compose for all services (1 point) Link
- CI/CD pipeline implementation (1 point) Link
- Environment configuration management using config files (1 point) Link
- GitHub pages for the project (1 point) Link (But couldn't add a picture)
- GitHub organization with well-maintained repository (1 point) GitHub organization Repository
- Regular commits and meaningful pull requests from all team members (1 point) We did commits in several branches for features and then by pull requests we merged them
- Project board (GitHub Projects) with task tracking (1 point) Link We have done not all we want, so you can see all our progress inside
- Team member roles and responsibilities documentation (1 point) Team in README.md
- Project overview and setup instructions (1 point) In README.md
- Screenshots and GIFs of key features (1 point) In README.md
- API documentation (1 point) In README.md
- Architecture diagrams and explanations (1 point) In README.md
- Consistent code style and formatting during CI/CD pipeline (1 point) We add linter to CI/CD
- Code review participation and resolution (1 point) We do it, but almost through the Telegram chat
- Localization for Russian (RU) and English (ENG) languages (2 points)
- Good UI/UX design (up to 3 points) Before starting work Ekaterina created Figma prototype Link
- Integration with external APIs (fitness trackers, health devices) (up to 5 points)
- Comprehensive error handling and user feedback (up to 2 points)
- Advanced animations and transitions (up to 3 points) Link
home_screen.dart: Animations for png-image for rotation and levitation (superimposed on each other) and animation when you hover over the buttons, they increase
Other screens: Animation when you hover over the buttons, they increase
- Widget implementation for native mobile elements (up to 2 points)
Total points implemented: 25/30 (excluding bonus points)