A full-stack note-taking application built with React (Frontend) and Flask + SQLAlchemy (Backend), deployed on Render using GitHub Actions CI/CD.
- Frontend: https://note-frontend-9vcp.onrender.com
- Backend: https://note-backend-bajx.onrender.com
β οΈ The backend may take 30β50 seconds to wake up on Render free tier.
Layer | Technology |
---|---|
Frontend | React, Axios, Lodash |
Backend | Flask, SQLAlchemy, CORS |
Database | SQLite |
CI/CD | GitHub Actions |
Hosting | Render (Docker-based) |
NoteTakingApp/
β
βββ .github/workflows/ # CI/CD pipeline
βββ backend/ # Flask API + DB models
β βββ models/
β βββ routes/
β βββ extensions.py
β βββ app.py
β
βββ src/ # React frontend source
β βββ Components/
β βββ App.js
β βββ index.js
β βββ api.js # BASE_URL config
β
βββ Dockerfile # Multi-stage React build
βββ docker-compose.yml # For dev environment
βββ .dockerignore
βββ README.md # This file
cd backend
python -m venv venv
venv\Scripts\activate # On Windows
# or
source venv/bin/activate # On macOS/Linux
pip install -r requirements.txt
flask run
cd src
npm install
npm start
Every push to the main
branch automatically triggers deployment via Render:
name: Deploy to Render
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Trigger Render Deploy (Backend)
run: |
curl -X POST "https://api.render.com/deploy/srv-d1cp1lmmcj7s73b71ld0?key=${{ secrets.RENDER_API_KEY }}"
- name: Trigger Render Deploy (Frontend)
run: |
curl -X POST "https://api.render.com/deploy/srv-d1cop3mmcj7s73b6og7g?key=${{ secrets.RENDER_API_KEY }}"
- Add user authentication (JWT)
- Migrate to PostgreSQL for production database
- Enable persistent disk or cloud storage (e.g., AWS S3)
- Add features like tagging, rich text editing, and pinning notes