Best android open-source packages and libraries.

CatchMe

Catch your friends with your phone. (A school project)
Updated 1 year ago

Author Release Twitter

CatchMe

🔶 Catch your friends with your phone.

⚠️ In order to be able to use the APP, a separate server would have to be set up, as there is currently no publicly accessible server. Sensitive location data is collected and shared with the server. However, since the server does not yet have any encryption standards for securing the data in the database, use the APP at your own risk. In the development of this project, general use was the most important.

Is still in progress

➡️ This is a mind map of what the rough structure of the server and client could look like. A VServer is used as a publicly accessible API.

📌 Table of contents

Client Explanation

  • Android-APP (Client): Using Python-Module: Kivy, KivyMD

When starting the APP, the connection to the server is tested immediately and as soon as this fails, an error dialog is displayed. :unlock: Required permissions:

ACCESS_FINE_LOCATION, ACCESS_BACKGROUND_LOCATION, ACCESS_NETWORK_STATE, INTERNET, MANAGE_EXTERNAL_STORAGE, MANAGE_MEDIA

Server Explanation

The server is summarized a Flask API, which is communicating with the client. The location data sent by the client is cached for a short time in order to calculate the distance with the other players. Each game is also written to the MongoDB with the players and remains stored until the respective game ends. The configuration data is stored in the conf.json-file and can be modified at will. But you should be aware that careless changes can affect the functioning of the server.

Server Deployment

When you decided to self host a CatchMe-Service, please follow these points:

🔸 Download MongoDB

  • You can install it at the official website of MongoDB

  • or install PyMongo via pip:

    pip3 install pymongo
    
  • or install MongoDB via the APT-Manager (for linux)

    sudo apt-get install mongodb
    

🔸 Download the repository from github with git and go to directory

sudo apt-get install git
git clone https://github.com/Pulsar7/CatchMe.git
cd CatchMe/backend/Rest-API-Server/

🔸 Install requirements

pip install -r requirements.txt

▶️ Before the server is started, it should be checked whether the connection address of the mongo database in the config file is correct.

🔸 Start MongoDB and run server

sudo service mongodb start
python3 rest_api_server.py

The Server should now be reachable on http://localhost:5000. But you can change some configurations in /server/conf/config.json.

Client Deployment

🔹 Download the repository from github with git and go to directory

sudo apt-get install git
git clone https://github.com/Pulsar7/CatchMe.git
cd CatchMe/frontend/Android-APP/

🔹 Install requirements

pip install -r requirements.txt

🔹 Insert the correct API-URL from Server in the config.json-File

Example (A snippet from the file):

"Server": {
    "url": "http://localhost:5000"
},

🔹 Run Client

python3 catchme.py

🔹 Create a package for Android (APK)

git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo python3 setup.py install
buildozer init
buildozer android debug deploy run

ToDo

  • [ ] SHA-256 encryption - all data in database (Server)
  • [ ] Improve layout from client
  • [ ] Auto reconnecting when losing internet connection (Client)
  • [ ] Add docker deployment (Server)

Suggestions & Reports

Suggestions or errors are welcome to be 🔗 reported!