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_ID
AWS_SECRET_ACCESS_KEY
AWS_REGION
ECR_REPOSITORY
EB_APPLICATION_NAME
EB_ENVIRONMENT_NAME
AMPLIFY_APP_ID
The repository is configured with GitHub Actions workflows for CI/CD:
-
Frontend workflow:
.github/workflows/frontend-deploy.yml
- Triggered on pushes to
main
branch (only affects files in thefrontend
directory) - 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
main
branch (only affects files in thebackend
directory) - Builds a Docker image, pushes it to AWS ECR, and deploys to Elastic Beanstalk
- Triggered on pushes to