▶ Cloud Deployment: Live Link
EngReji is an English-speaking practice app designed to help Bangladeshi users improve their English speaking skills.
If you want to work locally using your own IDE, you can clone this repo and push changes. The only requirement is having Node.js & npm installed - install with nvm
Follow these steps to get the project running locally:
git clone <YOUR_GIT_URL>cd <YOUR_PROJECT_NAME>npm installThis project uses PostgreSQL for data storage. Follow these steps:
sudo apt update
sudo apt install postgresql postgresql-contrib -y
sudo systemctl enable postgresql
sudo systemctl start postgresqlsudo -i -u postgrescreatedb engrejipsql
\password postgres
# Enter: abc123
\qpsql -d engreji -f "/path/to/backend/database/schema.sql"Create a .env file in the project root with the following content:
DATABASE_URL=postgresql://postgres:abc123@localhost:5432/engrejipsql $DATABASE_URL
# \dt # To list tablesOnce this is done, the backend will automatically connect to the database using the
DATABASE_URL.
cd backend
npm run devcd frontend
npm run devYour app should now be running locally at
http://localhost:5173(or whatever port Vite shows).
The API documentation is available through Swagger UI at:
http://localhost:3000/doc
You can:
- Explore all available endpoints
- Test API calls directly from the browser
- View request/response schemas
- See authentication requirements
- Download the OpenAPI specification
The raw OpenAPI/Swagger specification is available at swagger.yaml in the project root.
This project is built with:
- Framework: React 18 with TypeScript
- Build Tool: Vite
- Styling:
- Tailwind CSS
- shadcn/ui components
- Framer Motion for animations
- State Management: React Context
- API Client: Custom fetch wrapper
- UI Libraries:
- Lucide Icons
- Radix UI primitives
- class-variance-authority
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL with node-postgres
- Authentication: JWT (jsonwebtoken)
- Security: bcrypt for password hashing
- API Integration: Supabase
- Type Checking: TypeScript
- Testing: Placeholder for tests
- Version Control: Git
- API Documentation: Custom Markdown docs
- Environment: dotenv for configuration
- Make sure PostgreSQL service is running before starting the backend:
sudo systemctl start postgresql- Do not commit
.envto GitHub — it contains sensitive credentials. - If you make changes to the database schema, use Prisma migrations or SQL scripts carefully.