This RESTFUL API works as the backend for a React web app. The dockerized container of the app is currently hosted on Railway. All images are hosted in Cloudinary.
- About
- Setup and Installation
- Usage
- Development
- Authors
- π€ Contributing
- Show your support
- π License
Expert Class API is the backend for a fully responsive web app that I built with a team of 4 members. The front end of the app is handled separately by another app. The repo for the front-end is here. The API documentation of this project was generated with the 'rswag' gem. We built request and integration tests, achieving a 95% coverage. We use cross-site session cookies to handle user authentication. We use PostgreSQL as the database and Cloudinary to store all images in the cloud.
We used Rswag to generate all the API documentation directly from our tests. You will find all the endpoints necessary to use our API here: Documentation
- authenticate user
- create new user
- create and delete a class
- show all classes
- show all reserved classes
- reserve a class
Deployed to Railway: Live Demo
Watch a quick demo and walk-through of this project:
Expert Class - 13 January 2022 - Watch Video
- Ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
- Rails 6.1.4.1
- PostgreSQL 14
- Cloudinary (for image storing)
- Rspec (testing)
- Faker gem
- Factory bot
- Docker 20.10.22
- Docker compose v2.15.1
We used an agile methodology to manage all the tasks in this project. This project's tasks are described in this kanban board.
We used GitHub's built-in Kanban board:
To get a local copy up and running, follow these simple example steps.
- Open your terminal or command prompt.
- If you do not have git installed in your system, skip this step and go to step 3; otherwise, go to the directory where you want to copy the project files and clone it by copying this text into your command prompt/terminal:
git clone [email protected]:StarSheriff2/expert-class.git
Now go to either the "Docker Deploy" or the "Local Deployt" section, depending on how you wish to deploy the API in your system.
- Download the program files by clicking on the green button that says βCodeβ on the upper right side of the project frame.
- You will see a dropdown menu. Click on βDownload ZIP.β
- Go to the directory where you downloaded the ZIP file and open it. Extract its contents to any directory you want in your system.
You will need a Cloudinary account to be able to deploy this app locally or through Docker. If you already have one, look for the API Environment variable, which you will find in your cloudinary dashboard:
- for a Docker deployment, copy the API Environment variable into your .env file:
CLOUDINARY_URL=<your_unique_cloudinary_url>
- for a local deployment, copy the API Environment variable into your config/cloudinary.rb file, by replacing the text "<cloudinary_url_here>" with the respective value of your API Environment variable
; otherwise, create a new account by going to Cloudinary and sign up for a free account: https://cloudinary.com/.
Once you have your new Cloudinary account set up, follow these steps:
- Login with your new account
- Go to your Cloudinary dashboard
- Look for the API Environment variable
- Do the following:
- for a local deployment, copy it into your .env file, like exaplained above
- for a Docker deployment, copy it into your config/cloudinary.rb file like explained above
- Docker 20.10.22 or latest
- Docker Compose v2.15.1
docker compose up -d
- Ruby 3.0.2p107
- Rails 6.1.4.1
- PostgreSQL 14
- Cloudinary account and cloudinary_url
- If you are not in your system terminal/command prompt already, please open it and go to the directory where you cloned the remote repository or extracted the project files.
- While in the project root directory, type
This command will install all the necessary gems in your system.
bundle install
Run
bin/rails db:setup
This will create your local databases, load the schema, and initialize with the seed data.
Note: If you get an error after running this command, it might be because you don't have a database called "postgres". This happens because when you create a new Rails application, Rails uses this "postgres" database to create and manage the databases for your application. You can easily create one by running this command:
createdb postgres
If Rails still complains about not finding the "postgres" role, you can create one with super-user priviledges:
createuser -s postgres
Now try running the db:setup command again!
You are all set now!
-
In your terminal, run
bin/rails server
while inside the root directory of the repository files
Note: This command will not stop on its own. To exit, hit "ctrl + c"
-
The app allows API calls using curl or your favorite API client, such as Postman, HTTPPie or VS Code's Thunder Client. Here's a link to HTTPIE.
We created all types of tests for this project:
- Unit / Model tests
- Integration tests
- API request tests
To run all tests, type this into command line:
bundle exec rspec
To run Rubocop, go to the root directory of your repository and copy/paste the following command into your terminal:
rubocop .
π€ Arturo Alvarez
- Github: @StarSheriff2
- Twitter: @ArturoAlvarezV
- Linkedin: Arturo Alvarez
π€ Breno Xavier
- GitHub: @brenoxav
- LinkedIn: Breno Xavier
π€ Francis Uloko
- GitHub: @francisuloko
- Twitter: @francisuloko
- LinkedIn: Francis Uloko
π€ Mih Julius
- GitHub: @Mihndim2020
- Twitter: @mihndim
- LinkedIn: Mih Julius
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
Give a βοΈ if you like this project!
This project is MIT licensed.