This project, Workout Tracker API, is a showcase of my skills as a cloud developer. It was created as an application to Serverless Guru. The application is a Node.js project that provides endpoints for managing users, goals, and workouts.
This application utilizes a variety of technologies including Node.js for the backend, AWS Lambda for serverless computing, AWS API Gateway for managing and routing API requests, Docker for containerization, and the Serverless framework for managing and deploying the Lambda functions. Data is stored in a DynamoDB database, and the application is set up with a GitHub Actions workflow for continuous deployment. The API is documented using OpenAPI, with all definitions located in the docs
directory.
The project also supports multistage deployment with GitHub Actions. The main
branch is deployed to the production environment, ensuring that only stable and tested code is released. The dev
branch, on the other hand, is deployed to the test environment, allowing for continuous integration and testing of new features and changes before they are merged into the main branch.
Some of the best practices followed:
- Clean and clear code, with legible naming conventions and directory structure.
- Swagger for demo and live testing.
- Local setup with DynamoDB.
- Assigning different roles for different functions.
- Integration tests.
- Easy local setup with Docker and Docker Compose for quick development.
- Utilizing the Serverless framework for effortless deployment.
- GitHub Actions are set in place to automatically deploy services to AWS on code push.
To quickly try out the Workout Tracker API, you can access the stable hosted version at https://jmb6cgzee2.execute-api.us-west-2.amazonaws.com/.
The development version can be accessed at https://krxnwyfj7f.execute-api.us-west-2.amazonaws.com/docs/.
If you prefer to run the Workout Tracker API locally, follow these steps:
-
Clone the repository:
git clone https://github.com/jbhv12/serverless-workout-tracker-api.git
-
Start the application using Docker Compose:
docker-compose up
-
Once the application is running, you can access the different functions at the following URLs:
- Users function: http://localhost:3001
- Goals function: http://localhost:3002
- Workouts function: http://localhost:3003
- Docs function (API documentation): http://localhost:3004