Giter Club home page Giter Club logo

spray's Introduction

Stage: Pre-Release

App images below

An app for rock climbers by a rock climber.

Easily build, edit, share, and track boulders on a spray wall.

View and filter through other user published boulders on a spray wall, switch between spray walls in a gym, or search for other gyms.

Table of Contents

Tech-Stack

Full stack application:

  • React Native
  • Expo
  • Redux
  • Django
  • PostgreSQL
  • Amazon S3 Buckets
  • AWS RDS
  • Heroku

Features

Secure authentication with Django sessions and CSRF tokens.

Search for your gym or home wall via Apple Maps and Google geocoder API.

Add a new gym or home wall - edit the name, type, and location.

Add new spray walls to that gym - edit each spray wall's name and default image.

Home screen with a clean UI/UX that immediately displays the gym's name, spray walls, and a list of all published boulders in that spray wall.

Filter between spray walls in that gym or filter boulders through categorical filters or text inputs for specificity.

Add new boulder - options to use the default spray wall image, camera, or upload an image.

Edit and paint the boulder using your chosen image - green paint: starting hand holds, purple paint: foot holds, blue paint: hand and foot holds, red paint: finishing hold.

Can zoom and paint small holds whilst editing the boulder.

Using Python Imaging Library to manipulate the image by gray-scaling the entire image except for painted holds - leave the painted holds the color they are.

Storing all images in an Amazon S3 bucket and receiving the url to that image to send to the frontend and store in PostgreSQL database.

Add a boulder name, description, and more to your newly created boulder.

Publish or leave your boulder as a draft.

View any boulder - its name, grade, rating, image, setter name, date created, description, etc.

View the boulder image as a full screen with zoom and pan capabilities.

Optimistic updating when liking or bookmarking the boulder.

Log a repeated or first time ascent of a boulder - adding the number of attempts, grade and rating suggestion.

View overall statistics of that boulder - how many people have climbed the boulder, distribution graph of all suggested grades from users, and more.

View your personal statistics on that particular boulder - date ascended, suggested, grade, and number of attempts.

Add the boulder to your circuits.

Add a new circuit to your circuit list and place any boulders in that circuit (that exist on that spray wall).

Activity screen that displays and time stamps your significant activities - publishing a new boulder, ascending a boulder, repeating an ascent of a boulder, liking a boulder, bookmarking a boulder, adding a boulder to a circuit, and creating a new boulder.

Activity list are paginated to improve performance.

Profile screen that beautifully displays username profile image, current gym, current spray wall, categorical boulder data, statistics, and circuits.

Can freely change spray walls in your gym through the profile screen which changes all your boulder info (boulder info tied to each spray wall).

View all your logged boulders that displays a graph of quantity of boulders climbed at each grade difficulty, and a section list of all boulders logged in a particular spray wall for each session (day).

View liked, bookmarked, and created boulders for a particular spray wall.

View all the boulders in particular circuits you custom made.

Edit profile by changing your profile image, editing your nick name, username, email, signing out, or deleting your profile.

When changing your profile image, you can crop the image in aspect ratio 1:1, whilst also zooming and panning to desired region of the image.

Switch to a different gym in your profile that which you have shown activity in previously.

Backend-Functionality

Django as a backend utilizing its model-template-view architectural pattern as well as Django's rest_framework.

7 Django models: Gym, SprayWall, Person, Boulder, Circuit, Like Send, Bookmark, and Activity.

Amazon S3 bucket for storing all images and using boto3 SDK for Python to retrieve those image urls for frontend use or storing in the database.

PostgreSQL as a relational database management system to sort and find related data based on primary keys, such as certain boulders in a particular spray wall, displaying user data, user boulder statistics, etc..

Over 35 API calls.

CRUD operations in all areas of data posting - boulder creations, custom profile editing, gym and spray wall editing, circuits, etc.

Organized code via categorized views, utils, helper functions, common functions, and common imports.

Screenshots

Login

Create Account

Home

Boulder

Add Boulder

Edit Boulder

Zoom and paint boulder

NOT NEEDED

NOT NEEDED

Edited Boulder Preview

Published Boulder

Full Screen Image of Boulder

Log Ascent of Boulder

Add Boulder to a created circuit

NOT NEEDED

Boulder Statistics of all user on particular boulder

User's logged ascents on a particular boulder

Boulder settings (only author of boulder can delete boulder)

Gym settings (only for gym owners / spray wall owners)

Edit gym, spray walls for that gym, or delete gym entirely

Change gym type

Change gym name

Particular spray wall settings to change spray wall name or image

Change spray wall name

Filter list of boulders in chosen spray wall in the home screen

Map to search for gyms near you

Map search results

Map search results for a chosen gym (gym's info)

Activity of user (created boulder, sent boulder, etc)

Profile

Home screen alternate spray wall chosen

Alternate spray wall's boulder chosen (different image aspect ratio)

Profile switching to a different spray wall in a gym

Profile user's logbooked boulders

Profile user's liked boulders

Profile (scrolled down)

Profile user's top grade boulder(s)

Profile user's flahsed boulders (successfully ascended a boulder for the first time on user's first attempt)

Profile user's circuit boulders

Profile options pop up

Profile option switch to a different gym (only gyms that user has had activity in)

Edit profile

Crop image (zoom or pan. Works for any aspect ratio)

Change user's nickname in edit profile

Add new spray wall to a gym (only gym owners/admins can do this)

Home screen custom search in text input for particular boulders in that spray wall

spray's People

Contributors

gabrielmurry avatar

Stargazers

 avatar

Watchers

 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.