Skip to content

fockspaces/fastnote

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Fastnote

Fastnote

AWS Services License: MIT backend workflow Swagger API Terraform

πŸ““ Fastnote is a serverless note-taking app with MERN stacks, aiming at efficient idea management, offering features such as search functionality, auto-generation of summaries, and tagging with openAI.

πŸ”— Website URL: www.fastnote.space

⚠️ Please be aware that in guest mode, your data will be lost upon logging out.

πŸ“– How to Use: Tutorial

πŸ““ Under the Hood: Details

Note: In the 'Under the Hood' section, we'll take a closer look at the technical aspects of the project and how various technologies and skills were employed to achieve specific goals.


Table of Contents


Main Features

  • Full-Text-Search: Efficient full-text search functionality, allowing users to quickly find related notes they have written.
  • Asynchronous Processing: Perform independent summarization tasks with lambda functions
  • Scalable Design: Handle high-load scenarios by initiating additional containers as needed.
  • Infrastructure Management: Employed Terraform for resources management.

Architecture

image


MongoDB Database Schema

The database table schema is defined using Mongoose schema.

image


CI / CD

The deployment process for both frontend and backend components is managed separately.

image

Workflow

  • Backend Process: If the tests pass successfully, a Docker image is pushed to a Docker Hub, triggering an update in the AWS ECS services.

  • Frontend Process: Every commit initiates a build process for the React application. The resulting static files are uploaded directly to AWS S3 for web hosting, followed by an invalidation of the CloudFront cache.

Testing

Our project utilizes integration testing, focusing primarily on typical use-cases and critical paths.

You can find the coverage report in the /backend/coverage directory of the repository.

image

Tools

  • GitHub Actions: Automates the workflow from code push to deployment.
  • Jest and SuperTest: Utilizes for integrated testing in the backend API.
  • Docker: Ensures consistent, reproducible environments for AWS ECS.
  • Terraform: Manages and provisions AWS services resources, enhancing scalability and consistency.

API Documentation

The API documentation is supported by Swagger

πŸ”— https://app.swaggerhub.com/apis-docs/fastnote/fast-note_api/1.0.0


Technique

Technologies and tools utilized in the project.

Infrastructure

  • Docker
  • Terraform

Environment

  • Node.js / Express.js

Database

  • MongoDB Atlas
  • ElastiCache (Redis)

Test

  • Jest, SuperTest

CI / CD

  • GitHub Actions

Third Party Library

  • OpenAI
  • Tiptap

Frontend

  • React (Hook)
  • Sass

Cloud Services (AWS)

Server

  • Elastic Load Balancer
  • Elastic Container Service (ECS)
  • Elastic Compute Cloud (EC2)
  • Fargate

Storage

  • Simple Storage Service (S3)
  • CloudFront (CDN)

Message Broker

  • Simple Queue Service (SQS)
  • Lambda

DNS

  • Route 53

Contact

πŸ§‘πŸ»β€πŸ’» Feng Ming, Chang

βœ‰οΈ [email protected]

About

a serverless note-taking app with MERN stacks

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published