CeriseNote is a full-stack note-taking application built with the MEAN stack
Cerise because webapp has the theme #de3163
- Client: Angular
- Server: Express (Node.js)
- Database: MongoDB Atlas
- File Storage: Cloudflare R2
- Authentication: Google OAuth 2.0 (with session-based authentication)
- User authentication via Google
- Secure Server session via Mongo-Store
- File upload and storage via Cloudflare R2
- Create, update, and delete notes via MongoDB
- Responsive Angular SPA frontend
-
Have an account for the following:
- MongoDB Atlas (Create a project & cluster)
- Cloudflare (Create an R2 bucket)
- Google Cloud (OAuth 2.0 credentials for web client)
-
git clone https://github.com/systemized/cerisenote
-
Create a
.envfile in the root directory with the following variables:MONGO_URI=<mongodb_atlas_connection_string> SESSION_SECRET=<session_secret> R2_ACCESS_KEY_ID=<R2_access_key_id> R2_SECRET_ACCESS_KEY=<R2_secret_access_key> R2_BUCKET=<R2_bucket_name> R2_ENDPOINT=<R2_endpoint> GOOGLE_CLIENT_ID=<google_client_id> -
Create environemnt.ts and environment.development.ts files at /client/src/environments/
// environment.development.ts file export const environment = { production: false, apiUrl: 'http://localhost:3000/api', client_id: '<your own google client_id>' };
// environment.ts file export const environment = { production: true, apiUrl: '/api', client_id: '<your own google client_id>' };
-
Containerize and run:
docker-compose up --build
For production, change from
developmenttoproductionin ./client/nginx.confRunning at localhost:4200
-
Split Terminal (for client and server)
-
Start Frontend:
cd client npm install ng serve -
Start Backend:
cd server npm install npx tsc node dist/app.jsRunning at localhost:4200
