The idea is to create a RESTful API and web application for preparing card queries for Kotlin mobile application. Mango App API interacts with Firebase Realtime Database, gets the required data, applies some search and classification algorithms and provides an output JSON for the mobile app. Also, API processes smaller requests such as like someone, change user data etc.
- Database connection and query processing
- Simple requests from Kotlin frontend processing
- Profile search algorithm
- Minimalistic website
- Login / registration form
- Beautiful UI/UX
- Mobile app link
- Better locations
- GPS timestamp
- Distance calculation + search matches in a distance range
- Google Maps API - more location functionality
- Text bio ML classification algorithm
- Polynomial Bayes / SVM multi-class classification
- Hidden user classification, improved search
- Database optimization, SQL
- Events nearby
- Facebook/VK API
- Local events parsing into JSON
- Event recommendations
- Message tips to start up a conversation
- Gamification, more mechanics for comfortable UX (experimental, A/B-tests)
- Guidelines violation filter
- image recognition
- Keras machine learning classification
- Provide the best match for a user according to given parameters
- A user gets content even though there is no matches
- All the given profile bunches must be tracked to avoid unwanted card repetitions
- developing
Handles all the database interaction, queries processing and data fetching.
| Method | Arguments | Description | Returns |
|---|---|---|---|
requestsProcessor |
Main HTTP requests listener, calls other methods to process received requests | ||
submitLike |
user_id_send : String, user_id_liked : String | Adds user id into liked user's tree in DB, see database structure (used_id_send into users/{user_id_liked}/liked_me) | Integer (success/fail code) |
fetchUsersWithParams |
search_params: Params | Fetches user profiles JSONs from DB according to given params | List of User |
evaluateUser |
users: User, search_params : Params | Calculates how user profile fits required parameters | Float (User weight coefficient) |
Main web application package handling incoming HTTP requests and sending prepared data
Debug console app for testing HTTP requests on production
- Flask - main web framework
- Firebase - noSQL database by Google
- Heroku - web application deploy
- Pyrebase - Firebase python API
- Requests - HTTP requests handling
- Scikit Learn (future) - ML library
- Keras (future) - Python deep learning API
- Amazing Profile Bio ML AI Model
- Distance Between Two Locations
- Deep Learning Web App Using Keras
- Scikit Learn Classifier Calibration
- Amazing Morphological Analysis Library for NLP
- Scikit Learn Support Vector Machine in Details
- Multiclass ML Classification
| Request | Arguments | Description | Returns |
|---|---|---|---|
like |
user_id_send, user_id_liked | Like another profile and fill used_id_send into users/{user_id_liked}/liked_me | result_code |
get-cards |
_user_id_send | Prepares and sends a set of profile cards according to user's search preferences | JSON with a set of users cards |
Main database node containing all the user profile data
Chats and chat messages nodes
* - node header
Actual production URL:
https://mango-friends.com/
Web application is easy to be deployed in Heroku by using following commands:
$ heroku login
$ git add .
$ git commit -am "Heroku deploy"
$ git push heroku HEAD:master

