Monorepo containing the backend API and frontend admin app for managing e-ink picture frames. The backend persists metadata in JSON files and stores original/converted assets on disk.
- Node.js 20 or newer
- npm 9+
backend/Express API scaffold with JSON persistence directories inbackend/datafrontend/React + Vite + MUI admin shellassets/originalandassets/convertedfor uploaded and processed imagesAI/implementation plan and design notes
npm install --workspaces
cp backend/.env.example backend/.envnpm run dev:backend– start Express server with nodemon (defaults to port 4000)npm run dev:frontend– start Vite dev server for the React app (port 3000, proxies/api)npm run lint– run ESLint in all workspacesnpm run test --workspace backend– run Jest API testsnpm run test --workspace frontend– run Vitest + React Testing Library smoke tests
- Copy environment defaults if you have not already:
cp backend/.env.example backend/.env - Start the API:
npm run dev:backend - Access the health check at
http://localhost:4000/health - Frame endpoints live under
http://localhost:4000/api/frames - Photo upload and metadata endpoints are available at
http://localhost:4000/api/photos
backend/.env
PORT– HTTP port (default 4000)ASSETS_DIR– relative path to the assets root (../assetsby default)DATA_DIR– path to JSON persistence directory (./databy default)
frontend/.env (optional)
VITE_API_BASE_URL– override the backend URL used by the API client (defaulthttp://localhost:4000)
Move on to AI/step05_frontend_feature_pages.md to start building the dedicated frame and photo workflows on top of the shared foundation.