Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fazle-rabbi-dev/api-template-with-auth
π A robust and versatile Express.js REST API template with the setup of Authentication and User Management to streamline the process of creating REST APIs using Express.js.
https://github.com/fazle-rabbi-dev/api-template-with-auth
api-boilerplate api-template auth-api authentication-template express express-api-boilerplate express-api-template expressjs expressjs-api expressjs-template javascript nodejs nodejs-api rest-api rest-api-template
Last synced: 29 days ago
JSON representation
π A robust and versatile Express.js REST API template with the setup of Authentication and User Management to streamline the process of creating REST APIs using Express.js.
- Host: GitHub
- URL: https://github.com/fazle-rabbi-dev/api-template-with-auth
- Owner: fazle-rabbi-dev
- License: mit
- Created: 2024-07-06T07:00:18.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-07-08T05:10:49.000Z (6 months ago)
- Last Synced: 2024-07-08T06:28:35.393Z (6 months ago)
- Topics: api-boilerplate, api-template, auth-api, authentication-template, express, express-api-boilerplate, express-api-template, expressjs, expressjs-api, expressjs-template, javascript, nodejs, nodejs-api, rest-api, rest-api-template
- Language: JavaScript
- Homepage:
- Size: 1.05 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Api-Template-With-Auth π
Built With ππΎ
A robust and versatile REST API template with the setup of Authentication and User Management to streamline the process of creating REST APIs using Express.js.
It eliminates the need to write authentication code, saving you valuable time and effort. This template serves as an excellent starting point for any API requiring authentication, providing a secure and efficient foundation.
### π΄ Unveiling the Journey of Building This Api-Template
> [!Note]
> I developed this REST API to simplify the creation of APIs that require authentication. By using this template, developers can avoid writing authentication code, allowing them to focus on other essential aspects of their projects. This solution provides a comprehensive and efficient approach to creating REST APIs with user authentication.### Project Created at
- π *July 2024*### Technologies Used βοΈ
- Node.js
- Express.js
- MongoDB
- Cloudinary
- Express-Validator
- Node Mailer### π€ Fun Fact! How I Made This project || Screenshots
Read Here
### `π This project was created using an Android phone`
### π± Coding with Android is Amazing!
If you think you need a PC to start coding, think again! With just an Android phone, you can dive into the world of web and app development. Hereβs a showcase of a project created entirely on an Android phone using Acode, Restler, and Termux.
### π§ Tools Used:
- **Acode**: A powerful code editor with features similar to VS Code, such as auto code completion, keyboard shortcuts, and theme customization.
- **Restler**: A REST API client for testing and debugging APIs similar to Postman.
- **Termux**: A terminal emulator for Android that allows you to run Linux commands and scripts.
- **Hacker's Keyboard**: A pc like Keyboard for Android that allows you to use commands like: Ctrl, Alt, F1, F2, (Up, Down, Right, Left Arrow) etc.### πΌοΈ Screenshots:
1. **Project in Acode Editor:**
2. **Running the Project in Termux:**
3. **Testing APIs with Restler:**
### π Why Coding with Android is Amazing:
- **Portability**: Code anytime, anywhere with just your phone.
- **Convenience**: No need to carry a laptop; everything you need is in your pocket.
- **Efficiency**: Get a lot done with minimal resources.> [!Note]
> With the right tools, learning and developing on an Android phone is not only possible but also an incredibly rewarding experience. Start your coding journey now!---
## Features
- π **Authentication**: Secure user authentication and authorization.
- π **Pagination & Sorting**: Efficiently manage large data sets with pagination and sorting features.
- π **Partial Response**: Retrieve only the necessary data for optimized performance.
- π€ **File Upload with Cloudinary**: Upload and manage files using Cloudinary.
- π **Secure with JWT**: JSON Web Tokens for secure authentication.
- β **Validation with Express-Validator**: Ensure data integrity and correctness.
- π¦ **Rate Limit**: Protect against abuse and ensure fair usage.
- π§ **Account Confirmation**: Features for confirming user accounts before login.
- π **Reset Password**: Allow users to securely reset their passwords.
- π§ **Change Email**: Enable users to change their email with new email.
- π **Change Password**: Allow users to securely change their passwords.
- οΈπ **Graceful Error Handling**: Consistent and informative error responses.
- π **Documentation**: A comprehensive documentation with `swagger`.
- π **And Much More**> [!IMPORTANT]
> Please note that the **API Documentation** is currently a work in progress. Proper API documentation using Swagger is not yet complete. This means some endpoints may not be fully documented.> [!NOTE]
> *Im working on completing this documentation to provide a more comprehensive guide for using This Api Template.*### Live Demo π
> The API has not yet been deployed.---
## Setup Guide
### `Prerequisites`
Ensure you have the following installed on your machine:
- Node.js
- Git### Installation
1. **Clone the repository**:
```sh
git clone https://github.com/fazle-rabbi-dev/Api-Template-With-Auth
cd Api-Template-With-Auth
```2. **Install dependencies**:
```sh
npm install
```3. **Set up environment variables**:
Create a `.env` file in the root directory and add your configuration settings. For example:
```env
PORT=3000MONGODB_URI=
JWT_SECRET=
ACCESS_TOKEN_SECRET=
REFRESH_TOKEN_SECRET=
ACCESS_TOKEN_EXPIRY="1d"
REFRESH_TOKEN_EXPIRY="10d"
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
GMAIL_USERNAME=
GMAIL_PASSWORD=
ENVIRONMENT=dev```
4. **Customize Configuration**: Modify the constants in `/src/index.js` to fit your specific needs.4. **Run the server**:
```sh
npm run dev
```---
### Usage
- π The server will start on `http://localhost:3000`.
- Use a tool like Postman to interact with the API endpoints.
- **API base URL:** `http://localhost:3000/api/v1`
- **AUTH Base URL:** `base_url/auth`
- **USERS Base URL:** `base_url/users`
- **SEEDING Base URL:** `base_url/seed`- **π API Documentation:**
- `http://localhost:3000/api-docs`
- **β‘ API Health Check:**
- `http://localhost:3000/health`## Contributing π«±π»βπ«²πΌ
Contributions are welcome! π If you would like to contribute to **This Api-Template**, please follow these steps:
1. **Fork the repository**: Click the "Fork" button at the top right of this page to create a copy of this repository under your GitHub account.
2. **Clone your fork**: Clone your forked repository to your local machine.
```sh
git clone https://github.com/your-username/Api-Template-With-Auth
```
3. **Create a branch**: Create a new branch for your feature or bugfix.
```sh
git checkout -b feature/your-feature-name
```
4. **Make your changes**: Make your changes to the codebase.
5. **Commit your changes**: Commit your changes with a clear and concise commit message.
```sh
git commit -m "Add your commit message here"
```
6. **Push to your branch**: Push your changes to your forked repository.
```sh
git push origin feature/your-feature-name
```
7. **Create a Pull Request**: Go to the original repository on GitHub and create a pull request from your forked repository. Provide a clear description of your changes and the reasons for them.Your contributions will help make **This Template** even better. Thank you for your support! π
## License
This project is licensed under the MIT License.
---
Thank you for using **This Api-Template**! I hope it accelerates your eCommerce development and makes your life easier. Happy coding! π
### π¬ Connect with me
> Let's connect! Reach out for collaborations, projects, or just a friendly chat.*Feel free to explore, contribute, and get inspired!*