A modern full-stack application with Next.js frontend and FastAPI backend.
- Next.js 15
- React 19
- shadcn/ui components
- Tailwind CSS
- FastAPI
- Python 3.12
- uvicorn server
- Node.js 20+
- Python 3.12
- npm
-
Clone the repository
git clone <your-repo-url> cd intero
-
Install dependencies
# Install root dependencies npm install # Install frontend dependencies cd frontend npm install cd ..
-
Run the development server
# Start both frontend and backend with a single command npm run dev
This will start:
- Frontend at http://localhost:3000
- Backend at http://localhost:8000
intero/
├── frontend/ # Next.js application
│ ├── app/ # Next.js App Router
│ ├── components/ # React components including shadcn/ui
│ └── ...
├── backend/ # FastAPI application
│ ├── .venv/ # Python virtual environment
│ ├── main.py # FastAPI entry point
│ └── ...
├── scripts/ # Utility scripts
│ └── dev.sh # Development startup script
└── ...
GET /- Root endpoint returning welcome messageGET /api/hello- Sample endpoint returning a hello messagePOST /api/items- Create a new item
- Create a new Amplify app in the AWS console
- Connect it to your GitHub repository
- Set the following build settings in AWS Amplify:
- Base directory:
frontend - Build command:
npm run build - Output directory:
.next
- Base directory:
The application is configured to be deployed to Elastic Beanstalk using GitHub Actions.
You need to set up the following secrets in your GitHub repository:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONECR_REPOSITORYEB_APPLICATION_NAMEEB_ENVIRONMENT_NAMEAMPLIFY_APP_ID
The repository is configured with GitHub Actions workflows for CI/CD:
-
Frontend workflow:
.github/workflows/frontend-deploy.yml- Triggered on pushes to
mainbranch (only affects files in thefrontenddirectory) - Builds the Next.js application and deploys it to AWS Amplify
- Triggered on pushes to
-
Backend workflow:
.github/workflows/backend-deploy.yml- Triggered on pushes to
mainbranch (only affects files in thebackenddirectory) - Builds a Docker image, pushes it to AWS ECR, and deploys to Elastic Beanstalk
- Triggered on pushes to