Tracking App Api with Rails

This REST API was built with Ruby on Rails, and Postgres for the databases as the final project at Microverse. With this API, records (measurements) and items (things to measure) can be added, edited, and removed manually interacting with the database in the front-end application.

9
0
Ruby

Tracking App API built with Ruby on Rails

Screenshot

About the Project

As the final project at Microverse, this REST API was constructed using Ruby on Rails and Postgres for database management. It facilitates adding, editing, and removing records (measurements) and items (things to measure) via direct interaction with the database within the front-end application.

To understand its functionality, you can explore the Tracking App with React, the corresponding front-end application integrated with this API.

Key Components:

  • The database comprises three tables and corresponding models: User, Item, and Record.
  • User table includes columns for username, password, and admin privileges.
  • The items table features title, unit, icon, and target specifications columns.
  • Records table consists of date, result, item_id, and user_id fields.
  • User authorization is implemented using JWT and Rack-cors for enhanced security.

Please check how this API works in the Tracking App with React, which is the front-end application built with React, corresponds to this API.

A list of commonly used resources that I find helpful is listed in the acknowledgments.

Built With

Live Demo

Live Demo Link

Getting Started

To get a local copy up and running, follow these simple example steps.

  1. On the project GitHub page, navigate to the main page of the repository.
  2. Under the repository name, locate and click on a green button named Code.
  3. Copy the project URL as displayed.
  4. If you’re running the Windows Operating System, open your command prompt. On Linux, Open your terminal.
  5. Change the current working directory to the location where you want the cloned directory to be made. Leave as it is if the current location is where you want the project to be.
  6. Type git clone, and then paste the URL you copied in Step 3.

    e.g. $ git clone https://github.com/yourUsername/yourProjectName
  7. Press Enter. Your local copy will be created.
  8. To install all dependencies and necessary gems, run bundle install
  9. Run rails db:setup
  10. Run rails server to run rails application in your local server
  11. Run rspec to run rspec tests

How to allow the frontend app to interact with this API

  1. Go to puma.rb in config/initializers, and rewrite the port from 3000 to 3001 like below:
    e.g. port ENV.fetch("PORT") { 3001 }

  2. Go to cors.rb in config/initializers, and rewrite the origins path for your frontend path in both local and production

Authentication

  • To manage records and items, it needs to log in with a username and a password. Then, you need to include a token, which is issued and passed by logged in, in the header when interacting with this API like below:
    headers: { 'Content-Type': 'application/json', Authorization: Bearer ${token}, },
  • Plus, to manage items, it needs to log in with the user account with the admin: true

How to create admin user

This API administrator can create an admin user through the rails console in the local environment or using the rails database seed file whichever you like. For example, in the console, run IRB by rails c, then in the IRB console, you can create an admin user like below:
User.create(username: 'admin', password: 'admin', admin: true)

By default, I created the seeds file in this repository to create an admin user. So after rails db:setup at step 9 in the “Getting Started” section, the admin user will be automatically created.

Author

👤 Yoko Saka

Contributing

Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Show your support

Give a ⭐️ if you like this project!

License

This project is MIT licensed.

Acknowledgements