This RESTFUL API works as the backend for a React web app. I host the API on Render.com through a dockerized Ruby on Rails app. Authentication is handled with a JWT Token stored in the localStorage of the frontend.
- About
- Setup and installation
- Usage
- Development
- π€ Contributing
- π€ Acknowledgements
- Show your support
- π License
Weather App Calendar API is the API handling the core requests of the Weather Calendar App. The frontend is a fully responsive react web app deployed here. The repo for the front-end is here. I built request tests for all endpoints, achieving a 97% test coverage. I also created tests for all models. I use JWT token to handle user authentication and authorization.
- authenticate user
- create new user
- create new session
- all CRUD operations for the Reminder resource
Deployed to Render.com
- Ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
- Rails 6.1.4.4
- PostgreSQL 14
- Rspec (testing)
- Faker gem
- Factory bot
- JWT
- Docker 20.10.22
- Docker compose v2.15.1
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:
https://github.com/icode198/Weather-App-Calendar---backend.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.
- Docker 20.10.22 or latest
- Docker Compose v2.15.1
docker compose up -d
- Ruby 3.0.2p107
- Rails 6.1.4.4
- PostgreSQL 14
- 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
bundle install
This command will install all the necessary gems in your system.
-
Create an .env file copy and paste this into it:
DATABASE_HOSTNAME=postgres
-
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.
-
Check status of the api by calling this endpoint /healthcheck
- Unit / Model 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 .
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
JWT Implementation:
- Heavy reliance on this tutorial series to develop this JWT authentication strategy.
Give a βοΈ if you like this project!
This project is MIT licensed.