An open API service indexing awesome lists of open source software.

https://github.com/josephat-s/subscription-tracker-using-express.js

A full-featured subscription management API built with Node.js, Express, and MongoDB. Track users’ subscriptions, send automated renewal reminders, and manage user accounts securely with JWT authentication.
https://github.com/josephat-s/subscription-tracker-using-express.js

api arcjet authentication-backend express jwt mongodb server upstash

Last synced: 2 months ago
JSON representation

A full-featured subscription management API built with Node.js, Express, and MongoDB. Track users’ subscriptions, send automated renewal reminders, and manage user accounts securely with JWT authentication.

Awesome Lists containing this project

README

          

# Subscription Tracker API

A full-featured subscription management API built with Node.js, Express, and MongoDB. Track users' subscriptions, send automated renewal reminders, and manage user accounts securely with JWT authentication.

## Features

- **User Authentication**: Secure login and registration using JWT tokens.
- **Subscription Management**: Create, read, update, and delete subscriptions.
- **Automated Reminders**: Send renewal reminders before subscription expiry.
- **Bot Protection**: Integrated Arcjet middleware for enhanced security.
- **Error Handling**: Centralized error handling middleware for consistent responses.

## Tech Stack

- **Backend**: Node.js, Express.js
- **Database**: MongoDB, Mongoose
- **Authentication**: JWT (JSON Web Tokens)
- **Security**: Arcjet, Cookie Parser
- **Utilities**: Day.js for date manipulation

## Installation

### Prerequisites

- Node.js (v14 or higher)
- MongoDB (local or cloud instance)

### Steps

1. Clone the repository:

```bash
git clone https://github.com/Josephat-S/subscription-tracker-using-express.js.git
cd subscription-tracker-using-express.js
2. Install dependencies:
```bash
npm install
3. Envirnment:
Create a file called **.env.example.local**, and create variables as listed in *.env.development.example**