Giter Club home page Giter Club logo

sweat-buddy's Introduction

About

This project is a distributed activity tracking application built with Java, utilizing the map reduce framework. The application consists of a central server and Android clients that connect to it. The server receives GPX files from clients and processes them using workers. The results are then aggregated and returned to the user.

The backend of the application incorporates synchronization techniques and multithreading, enabling it to handle multiple client requests concurrently. This ensures efficient and seamless processing of activity data from a large number of users.

On the frontend, the application utilizes Jetpack Compose to create a visually appealing and user-friendly interface. The design focuses on providing an intuitive and immersive experience for users, making it easy to track their activities and access relevant information.

In addition to the core functionality, the application offers extra features such as a global leaderboard based on points calculated from user performance metrics (e.g., total distance run). It also includes a segment detection feature that identifies subroutes within a user's activity, allowing for segment-specific leaderboards.

By providing a comprehensive distributed activity tracking solution, this project showcases the effective use of Java, the map reduce framework, synchronization techniques, and multithreading. It also demonstrates the utilization of Jetpack Compose to create a visually appealing user interface. Whether you are interested in exploring the backend implementation or experiencing the frontend design, this project serves as an excellent resource for understanding and implementing distributed activity tracking applications.

Please note that this project is intended for educational and learning purposes and is not meant for commercial distribution.

Structure

  • Server
📦server
 ┣ 📂logging
 ┃ ┗ 📜server.log
 ┣ 📜ClientHandlerThread.java
 ┣ 📜ClientListener.java
 ┣ 📜Reduce.java
 ┣ 📜Server.java
 ┣ 📜Utils.java
 ┣ 📜WorkerHandlerThread.java
 ┗ 📜WorkerListener.java
  • Worker
📦worker
 ┣ 📜ChunkProcessorThread.java
 ┣ 📜ChunksListenerThread.java
 ┣ 📜ResultSenderThread.java
 ┗ 📜Worker.java
  • Dependencies
📦dependencies
 ┣ 📂fileprocessing
 ┃ ┣ 📂distance
 ┃ ┃ ┗ 📜Haversine.java
 ┃ ┣ 📂gpx
 ┃ ┃ ┣ 📜Chunk.java
 ┃ ┃ ┣ 📜GpxFile.java
 ┃ ┃ ┣ 📜GpxResults.java
 ┃ ┃ ┣ 📜WaypointImpl.java
 ┃ ┃ ┗ 📜WaypointImplTimeComparator.java
 ┃ ┣ 📜TransmissionObject.java
 ┃ ┣ 📜TransmissionObjectBuilder.java
 ┃ ┗ 📜TransmissionObjectType.java
 ┣ 📂mapper
 ┃ ┗ 📜Map.java
 ┣ 📂structures
 ┃ ┣ 📜FifoQueue.java
 ┃ ┗ 📜RingBuffer.java
 ┣ 📂user
 ┃ ┣ 📜GenericData.java
 ┃ ┣ 📜GenericStats.java
 ┃ ┣ 📜LeaderboardEntry.java
 ┃ ┣ 📜LeaderboardEntryComparator.java
 ┃ ┣ 📜Route.java
 ┃ ┣ 📜Segment.java
 ┃ ┣ 📜SegmentAttempt.java
 ┃ ┣ 📜SegmentLeaderboardEntry.java
 ┃ ┣ 📜SegmentLeaderboardEntryComparator.java
 ┃ ┗ 📜UserData.java
 ┗ 📜Utilities.java

Android Client Demo

(Android Studio Pixel 6 API 33)

demo.mp4

sweat-buddy's People

Contributors

arvesx avatar dimparar avatar jkamberi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.