A secure task management application built with React, Flask, AWS Cognito, and DynamoDB.
- User authentication with AWS Cognito
- Task creation, editing, and deletion
- Task filtering and sorting
- Real-time updates
- Secure API endpoints
- Responsive design
-
Frontend:
- React with TypeScript
- Material-UI
- React Query
- Amazon Cognito Identity SDK
- Vite
-
Backend:
- Flask
- PynamoDB
- AWS Cognito
- AWS DynamoDB
- Node.js v18+
- Python 3.10+
- AWS Account with Cognito and DynamoDB set up
- Create a virtual environment and activate it:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
cd backend
pip install -r requirements.txt
- Copy the example environment file and update it with your values:
cp .env.example .env
- Start the Flask server:
python -m flask run
- Install dependencies:
cd frontend
npm install
- Copy the example environment file and update it with your values:
cp .env.example .env
- Start the development server:
npm run dev
FLASK_APP
: Flask application entry pointFLASK_ENV
: Flask environment (development/production)AWS_REGION
: AWS region for servicesAWS_ACCESS_KEY_ID
: AWS access keyAWS_SECRET_ACCESS_KEY
: AWS secret keyCOGNITO_USER_POOL_ID
: AWS Cognito User Pool IDCOGNITO_APP_CLIENT_ID
: AWS Cognito App Client IDDYNAMODB_TABLE_NAME
: DynamoDB table nameCORS_ORIGIN
: Frontend URL for CORS
VITE_API_URL
: Backend API URLVITE_COGNITO_USER_POOL_ID
: AWS Cognito User Pool IDVITE_COGNITO_APP_CLIENT_ID
: AWS Cognito App Client ID
- The frontend runs on
http://localhost:5173
- The backend runs on
http://localhost:5000
- API endpoints are prefixed with
/api
- Environment variables containing sensitive information are not committed to the repository
- AWS Cognito handles user authentication
- API endpoints are protected with Cognito tokens
- CORS is configured for security