Week #6 #
Links #
- Deployment: You need to build flatter app, instruction below
- API Docs: Swagger
- Design: Gdrive
- Demo: Gdrive, also will be presented at mitting with TA
- ML Docs: FastAPI
- Server Statistics: Grafana user: admin pass: 1523
Final deliverables #
Project overview #
FishMasters a mobile app for anyone who loves fishing, whether you’re just starting out or you’ve been at it for years. We noticed that beginners often don’t know where to fish or how to tell one fish from another, and even experienced fisherman can get bored with the same old routine. So, we createad a new way to make fishing more fun and social for everyone.
The app mixes useful fishing info with a bit of friendly competition. There’s an interactive map where you can find good fishing spots, use our AI to figure out what fish you’ve caught (just take a picture or type a description), and chat with other users about your catches and favorite locations.
Some of the main things we’ve built: you can sign up and log in, see fishing spots on the map, use AI to ID fish from photos or descriptions, join in on discussions, and keep track of your fishing progress. Basically, it’s a fishing helper in your phone.
Features #
- User login and registration
- Name of the profile
- Picture in the profile
- Databases for all entities
- Possibility to rotate the map
- Possibility to open labels with fish pictures on the map
- Possibility to start the event of fishing
- Form to add pictures of fishes
- Possibility to leave comments and have discussion of the fish locations
- Profile with all caught fish
- Scoring system for fisherman
- Accurate ML model to get fish name based on the description
- Accurate ML model to get fish name based on the photo
Tech stack #
- Backend:
- Java: powerful and popular programming language, built-in auth support, integration with Spring Boot. Maybe add Kotlin, which is just the best Java.
- Spring Boot: very powerful tool that helps you write coherent code quickly, build-in Spring Security(for auth and registration), Kafka configuration , Redis configuration, Spring Data JPA for communication with database.
- PostgreSQL - store user data, fishing spots, and support geo-queries.
- Liquibase - manage database schema migrations.
- Docker + Docker Compose - package the backend with all dependencies. Also, it’s easy way to build project in CI/CD when we don’t have many resources for the project.
- Swagger - the best tool for describing API functionality.
- JaCoCo - autogenerated test coverage report.
- Flutter:
- framework to build fast, cross-platform apps from a single codebase. It has high performance and native-like experiences for iOS, Android.
Setup instructions #
- Backend: Instruction is in the README.md in the “back” directory, link
- Frontend: Instruction is in the README.md, “mobile_app” directory, link
Presentation draft #
Here is the final presentation draft, link
Weekly commitments #
Individual contribution of each participant #
Stepan Vagin:
- Created draft for final presentation, (link above)
- Helped with deployment of ML search, link
- Created pipeline with uploading fish images into the Qdrant database, wrote embedder for images, wrote readme for the picture part, PR
Kostya Zimin:
- fixed bugs and plan what to do for backend part before the presentation
- start to do presentation according to backend part
- add some tests for checking messaging, PR
Ivan Vasiliev:
- Run the script to upload the picture embeddings to the qdrant database
- Wrote basic functions of search using FAISS and using Qdran, commit
- Added comparing different searchs, commit
Kirill Greshnov:
- Fetch water points and display them as markers on the map
- Upload fish photos to mock ML model for prediction
- Manual upload of fish name (without photo) and integrated search by fish description, PR
Egor Belozerov:
- added the CD job for deployment flutter apk and configured docker for the ml part, PR
- set up a temporary server for ML, which can be accessed via, link (We’ll probably turn it off because it’s too expensive for us)
Damir Sadykov:
Adel Gaznanov:
- fixed bug related to the storing id as an integer instead of boolean one, PR
- write tests for leader-board, PR
Plan for Next Week #
- Finalize the presentation
- Finalize building CNN model of fish recognition
- Integrate Fish recognition model into the project
- Bug fix
Confirmation of the code’s operability #
We confirm that the code in the main branch:
- [+] In working condition.
- [+] Run via docker-compose (or another alternative described in the
README.md
).