Coder Social home page Coder Social logo

polytalon / climbing-gym-app Goto Github PK

View Code? Open in Web Editor NEW
13.0 1.0 1.0 2.08 MB

App designed for climbing gyms and climbers alike.

Home Page: https://polytalon.com/

License: GNU General Public License v3.0

Kotlin 0.02% Ruby 0.44% Swift 0.08% Objective-C 0.01% Dart 98.33% Batchfile 0.09% Shell 0.09% HTML 0.93%
climbing climbing-gyms app sports sports-app fitness-app fitness firebase flutter flutter-app

climbing-gym-app's Introduction

GripGuide

Flutter Android Build

An idea by Polytalon, designed and built by students of the HTWG Konstanz.

GripGuide is an app designed for climbing gyms and climbers alike. It provides gyms with the opportunity to publish routes and news, while climbers can track their progress and give feedback to the gym.

Feature overview

Generally, the app allows registering as a user and choosing your current gym. After registering, users can use the gym's routes to track their progress and get an overview of their current performance.

Gym owners and route setters can add, remove and edit routes. Additionally, gym owners can publish news, to be displayed for every gym-user of their gym.

All of these features, including editing routes and gyms, can be used from withing the app and without manually editing the configuration in the backend. Gyms, their owner and global news can only be added by an operator, while a gym owner can add route setters and local news to their gym.

Technology

To build the user-interface, we use Flutter, which compiles down to native iOS and Android apps. The backend is build using Firebase, as it provides an easy Flutter integration.

We test and deploy our code using automated GitHub Actions that ran on different points during the development process. Our GitHub Actions include automatic testing of builds for iOS and Android.

The project can also be compiled as a Web-App, but is currently not actively maintained, as it isn't part of our current scope.

Development Team

climbing-gym-app's People

Contributors

bernhardgundel avatar hyerex avatar juelsen avatar lugsoin2 avatar nailomat avatar v1lling avatar voigtsebastian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

vaibhavantil2

climbing-gym-app's Issues

Google Login

The user should be able to login via his/her Google Account.

Assign permissions

depends on #57

  • Operator can authorise other operators.
    If a operator, give a User the Role operator, must be follwing created:
    A subcollection below the "/Users//" collection named "private/operator/" with the field "operator: true"

  • Gymuser can authorise builder:
    If a gymuser, give a User the role builder, must be following created in the db if it does not already exist:
    The Collection "/Privileges//" with the field "normaluser: true" and below it the subcollection "private/roles/" with the field "gymuser: true".

  • Also revoke the permission must be implemented

Database schema

We need to plan a valid database schema that allows for users, climbing gyms and their relationship.

  • user table
    • name
    • optional location?
    • optional age?
    • etc.
  • climbing gym table
    • location
    • name
    • etc.
  • A way to match the permissions of a user to a climbing gym

Generally all of the data above is a must, additional information should be easy to add if necessary.
Therefore we should start planing and actually implementing the scheme soon.

Presentation

About the presentation for next week and the general presentation of the project (readme/documentation).

Choose your gym logic create privileges in DB

  • If select a gym as a logged-in user, the privilges must be stored in the DB at Users:
  • below "users//" must be created a subcollection if not exists "ptivileges//" with the field "normaluser: true"
  • also the unchoose must be implemented

Automatic Deployment for Web crashes

The automatic deployment of the web version crashes, because there is no public-Folder.
Instead, the web version should be deployed from "/build/web/".

Deployment job is failing

/usr/local/bin/npx firebase-tools deploy --only hosting --project flutter-test-31e18 --json
***
"status": "error",
"error": "Specified public directory 'build/web' does not exist, can't deploy hosting to site flutter-test-31e18"

Copied from a failed deployment run.

Persistent Web Auth

We want the user to be loggedin after closing and reopening the browser :)

Style guideline

General

  • Why is this an issue? Because I want feedback and everybody can easily tell my why this guide is wrong and everything should be done differently
  • Shouldn't we fork the project an work on this fork? Probably yes, but we are all somehow lazy, aren't we?

Branches

A personal branch should always start with you username. Every branch that does not have a leading username is a special branch that is used to synchronize work (main, development and feature-branches). Where main is the branch tracking the current release and development is used to collect features for release.

If you are working on a feature or fix a bug that is part of an issue, you create a branch that follows the form of username/issue/issue-id. This way it is clear that you are working on a specific issue.
If you work on something that is not part of an issue (shame on you), the naming-scheme should be username/information-about-branch. The information-about-branch should describe the work you are doing correctly and clearly.

If multiple people work on a single issue, a special branch is created that has the form issue/issue-id. This branch is used for synchronization and then merged into development.

Pull-Requests

You shall not merge into main, development or a feature-branch without a pr!
It is annoying to have new commits without information about what they do, do a pull-request and assign the correct people to it.

If you are working on an issue, reference the issue in the pull-request. Have look at the official documentation about how to do this..

Clean up after a successful merge. GitHub makes it easy to remove merged feature branches, if they are not used anymore, delete them.

Commits

If you want information about commit messages.

CI Testing

There should be some kind of CI and build automation in place.
I would propose a simple build process that gets executed on every pull-request and builds the web, android and iOS version of the app.

If we start writing tests at some point this can be extended to automatically run all tests.

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.