Adolfo Reyna 148ed696b2 feat: Add Swagger API documentation
This commit introduces Swagger API documentation for all endpoints in the
application.

- Installs  and .
- Configures Swagger in  to generate and serve API documentation
  at .
- Adds JSDoc-style Swagger annotations to all routes in  and
  the  directory (, , ,
  , , ).
- Defines a cookie-based security scheme for authenticated routes.

This allows for interactive API documentation and testing via the
endpoint.
2025-07-17 09:52:37 -04:00
2025-07-17 09:32:27 -04:00
2025-02-20 23:27:13 -05:00
2025-02-20 23:27:13 -05:00
2025-02-21 22:06:45 -05:00
2025-07-17 09:32:27 -04:00
2024-10-18 11:59:15 -04:00
2024-10-18 11:59:15 -04:00
2025-02-21 00:12:42 -05:00
2025-07-17 09:52:37 -04:00
2025-02-20 23:27:13 -05:00
2021-11-10 22:03:49 -08:00
2021-10-04 10:13:06 -07:00
2025-07-17 09:37:21 -04:00
2023-05-31 06:11:50 -04:00

EMI Backend service

This is the code for the backend of the EMI website.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

What things you need to install the software and how to install them:

node.js
npm
mongodb

Installing

A step by step series of examples that tell you how to get a development env running:

  1. Clone the repo
  2. Install NPM packages
    npm install
    
  3. Create a .env file with the necessary environment variables (PORT, MONGO_URL, STRIPE, etc.)
  4. Run the server
    npm start
    

API Endpoints

The API is divided into several sections based on functionality. Most routes under /user, /post, /bible, and /songs require authentication via a session cookie.

Authentication

  • POST /signup: Creates a new user account.
  • POST /login: Logs in a user and creates a session.
  • GET /logout: Logs out the current user.
  • POST /resetPassword: Sends a password reset link to the user's email.

General

  • GET /: Returns basic information about the logged-in user.
  • GET /invite/:email: Checks if an invitation exists for a given email.
  • POST /changeProfile: Changes the active profile for the logged-in user.
  • POST /token: Refreshes the push notification token for a profile.
  • POST /subscribe: Subscribes a profile to web push notifications.

Profiles (/user)

  • GET /mine: Get all profiles for the logged-in user.
  • POST /: Creates a new profile.
  • POST /invite: Invites a new user by email.
  • GET /invite/:email: Get invitation details for an email.
  • GET /groups: Get a list of all groups.
  • GET /groups/following: Get a list of groups the current profile is following.
  • POST /groups: Create a new group.
  • GET /courses: Get a list of all courses.
  • POST /groups/accept: Accept a request to join a private group.
  • POST /groups/reject: Reject a request to join a private group.
  • GET /groups/search: Search for groups.
  • GET /groups/:id: Get details for a specific group.
  • GET /groups/:id/subscribe: Subscribe to a group.
  • GET /groups/:id/unsubscribe: Unsubscribe from a group.
  • GET /search: Search for profiles.
  • POST /setData: Set custom data for a profile.
  • POST /myProfile: Update the current user's profile.
  • GET /:id: Get a specific profile by ID.
  • DELETE /:id: Delete a profile.
  • GET /:id/follow: Follow a profile.
  • GET /:id/unfollow: Unfollow a profile.

Posts (/post)

  • GET /organic: Get the organic feed for the current user.
  • GET /: Get the feed with promotional content.
  • GET /tag/:tag: Get posts with a specific tag.
  • GET /usr/:id: Get posts from a specific user.
  • GET /usr/:id/images: Get all image posts from a user.
  • GET /usr/:id/embedded: Get all embedded posts from a user.
  • GET /usr/:id/media: Get all media posts from a user.
  • POST /: Create a new post.
  • POST /react: React to a post.
  • POST /unreact: Remove a reaction from a post.
  • POST /bookmark: Bookmark a post.
  • POST /unbookmark: Remove a bookmark from a post.
  • POST /comment: Add a comment to a post.
  • POST /comment/react: React to a comment.
  • POST /comment/unreact: Remove a reaction from a comment.
  • GET /images: Get all image posts for the current user.
  • GET /embedded: Get all embedded posts for the current user.
  • GET /media: Get all media posts for the current user.
  • GET /course/recent: Get recently watched media from courses.
  • GET /:id: Get a specific post by ID.
  • DELETE /:id: Delete a post.
  • POST /:id: Update a post.

Payments (/payments)

  • POST /create-payment-intent: Creates a Stripe Payment Intent.
  • POST /intent: (Alias for /create-payment-intent)
  • POST /register: Registers a payment after a successful Stripe transaction.

Songs (/songs)

  • GET /: Get all songs.
  • POST /: Create a new song.
  • GET /:id: Get a specific song by ID.
  • DELETE /:id: Delete a song.
  • POST /:id: Update a song.

Bible (/bible)

  • GET /: Get a list of available Bibles.
  • GET /books: Get the books of a Bible.
  • GET /books/:bookId: Get details for a specific book.
  • GET /books/:bookId/chapters: Get the chapters of a book.
  • GET /chapters/:chapterId: Get the content of a chapter.
  • GET /chapters/:chapterId/verses: Get the verses of a chapter.
  • GET /search: Search the Bible.

Subsplash (/subsplash)

  • GET /events/:calendarId: Get events from a Subsplash calendar.
  • GET /media/:seriesId: Get media from a Subsplash media series.

TODO

  • Define nodes schema
  • Implement basic login/registration
Description
No description provided
Readme 432 KiB
Languages
JavaScript 99.7%
Dockerfile 0.3%