Prompt Cart is a Smart eCommerce Application that helps consumers effortlessly find products theyβre looking for. The system combines a full-stack web infrastructure and a microservices-ready architecture (FastAPI coming soon) with a chatbot assistant and intelligent product recommender.
This monorepo currently consists of:
- A Node.js / Express / PostgreSQL backend
- A React / Typescript / Vite frontend powered by Tailwind CSS, Vitest, Cypress, and Docker
- PostgreSQL
- TypeScript
- Node.js
- Express.js
- TypeORM
- React (Typescript) (with Vite)
- Tailwind CSS
- Vitest (unit testing)
- Cypress (E2E testing)
- Docker & Docker Compose
PromptCart/
β
βββ client/ # React Frontend
βββ server/ # Node.js Backend
βββ README.md
- Node.js v20+
- npm v10+ or yarn
- PostgreSQL installed and configured
- Docker (optional but recommended for containerization)
git clone <repo_url>
cd serverCreate .env and .env.local files based on .env.example. Fill in your database and server config:
NODE_ENV="local"
AUTH_TOKEN_EXPIRATION_TIME=""
AUTH_TOKEN_SECRET=""
DB_HOST=""
DB_NAME=""
DB_PASSWORD=""
DB_PORT=""
DB_USERNAME=""
DB_MAIN_SCHEMA=""
DB_AUDIT_SCHEMA=""
LOGGING_COMBINED_FILE=""
LOGGING_ERROR_FILE=""
LOGGING_LEVEL=""
LOGGING_TYPE=""
SERVER_PORT=""Using a tool like pgAdmin or CLI:
createdb promptcart_dbnpm install
npm run db:migration:generatenpm run serverBackend runs by default at: http://localhost:3000
# Setup test database first
createdb promptcart_test_db
# Configure .env.test based on .env.example
npm run setup:test
npm testcd ../client
npm installOr with yarn:
yarn installnpm run devOr:
yarn devFrontend runs by default at: http://localhost:5173
docker build -t promptcart-frontend .
docker run -p 5173:5173 promptcart-frontendMake sure the provided docker-compose.yml exists in /client, then run:
docker-compose up
# Or detached
docker-compose up -dTo stop:
docker-compose downnpm run test
# or interactive:
npm run test:uinpm run cy:openThis project uses Tailwind CSS. Modify tailwind.config.js to customize utilities. Example usage:
<button className="bg-blue-500 hover:bg-blue-700 text-white py-2 px-4 rounded">
Click me
</button>npm run build- Ensure the backend is running and accessible to the frontend for API requests.
- You can update the frontend to point to the backend by setting a proxy in
vite.config.ts.
This project is licensed under the MIT License.