This is the developer documentation for a bike ride logging application that refers to an specifically designed API for user authentication and ride storage. The developer used the Atom text-editing platform, along with git and other software to write and test the code. The developer wrote the API development code using Ruby on Rails with Pry for testing (the client facing code was written using HTML, SCSS (CSS) and JavaScript).
The Github repositories for this project are located here:
Bike Ridr is an application that can be used by cyclists to log date, location, distance and time data from their bike rides; then review, edit or delete previous ride data. User authentication and in-app requests are routed to and handled in this API. The database includes a users table and a rides table. The relationships between these tables are: user has_many rides
and rides belong_to user
All CRUD actions require user authentication before a response is sent to the client.
Initial wireframes images:
- Signed out/initial page.
- Signed in page.
- New Ride input page.
- Ride history page.
Bike Ridr user stories:
- As a first-time user, I want to create a user account.
- As a user, I want to record (create) a new ride record.
- As a power user, I want to know my pace after providing my time and distance.
- As a returning user, I want to search for, update or delete previous ride data.
The following technologies were used to create this project:
- HTML.
- SCSS.
- JavaScript.
- JQuery.
- Node.js.
- Ruby on Rails.
- Pry.
- PostgreSQL.
- Atom.
- Git.
- Github.
- Heroku.
- Grunt.
- Curl.
- AJAX.
- Bootstrap.
This project started by developing an initial project scope, which was modified as necessary during development:
- Developed application idea, and determined diagrammed ERDs for successful creation.
- Scaffolded database tables for API.
- Developed wireframes for desired user interface.
- Made considerations for how various in-app screens would be displayed.
- Placed heavy emphasis on meeting minimum viable product first. Initially applied minimal SCSS to ensure that the user experience met requirements, and additional styling was added near completion as time permitted.
- Placed heavy emphasis on performing new tasks in new branches and making regular commits. Branch names explain what changes were made on that branch, and often include just one commit.
The following improvements could be made:
- Improvements to interface for more user-friendly experience.
- Create user profiles to enhance/personalize each user's experience, and to enable interaction between user accounts (eg. view another user's rides).
- Ride history table data sorted by date.
- Output average speed of rider during activity.
- Modals for user inputs.
- Logo and animations for buttons.
- Help documentation.
- Provide additional pseudocode for understanding what is being done.
- Refactor code for improved readability.
- Inputs for additional ride data (eg. cycling cadence).
- Input ride data in tabular format.
- Resolve formatting issues on various screen setups.