GoNext is a modern full-stack starter kit designed to help you launch your idea in production as quickly as possible. It leverages Golang for the backend, ReactJS for the frontend, and PostgreSQL for the database. The project is optimized for both rapid local development (using Docker) and scalable production deployment (using AWS infrastructure).
- Backend: Golang (with Ent ORM)
- Frontend: ReactJS (Vite)
- Database: PostgreSQL
- Dev Environment: Docker Compose
- Production Environment: AWS (EC2, RDS, S3, CloudFront, ALB, Terraform)
GoNext/
├── backend/ # Golang API server
├── frontend/ # ReactJS app (Vite)
├── infra/ # Terraform for AWS infrastructure
├── docker-compose.yml
- Clone the repository:
git clone <your-repo-url> cd GoNext
- Configure environment variables:
- Copy
.env.example
to.env
and fill in required values. - In
frontend/go-next
copy.env.development.example
to.env.development
and fill in required values.
- Copy
- Start the stack:
docker-compose up --build
- Access the apps:
- Frontend: http://localhost:3000
- Backend: http://localhost:8080
- Configure AWS credentials on your machine.
- Ensure you have AWS CLI installed and configured with your credentials.
- Set up your AWS environment variables or use a credentials file.
- Edit Terraform variables:
- Copy
infra/terraform/variables.tfvars.example
toinfra/terraform/variables.tfvars
with your desired values.
- Copy
- Provision infrastructure:
cd infra/terraform terraform init terraform apply -var-file=variables.tfvars
- Build and deploy the backend and frontend:
- Certificate: Ensure you have an SSL certificate set up in AWS Certificate Manager (For external registrar domain).
- Add certs files to
infra/terraform/certs
. - Verify domain with CNAME records.
- Register CNAME records in your domain registrar for cloudfront distribution and ALB public DNS.
- Add certs files to
- Backend: Build Go binary and upload to EC2 and run the service.
- Frontend: Build React app and upload to S3 bucket for CloudFront distribution.
- Certificate: Ensure you have an SSL certificate set up in AWS Certificate Manager (For external registrar domain).
- JWT authentication
- User management
- Secure password validation
- Modern React UI with protected routes
- Infrastructure as code (Terraform)
- Ready for CI/CD integration