A full-stack application that allows users to create their own Linktree-style landing page with multiple links. Built with Vue.js, Gin (Go), and PostgreSQL.
- User authentication (signup/login)
- Create and manage personal profile
- Add, edit, and delete links
- Track link click analytics
- Responsive design
- Swagger API documentation
- Kubernetes deployment support
- Vue.js 3
- Vite
- Tailwind CSS
- Axios for API calls
- Go (Gin framework)
- GORM for database operations
- JWT for authentication
- Swagger for API documentation
- PostgreSQL 17
- Docker
- Kubernetes
- Helm
- Go 1.23+
- Node.js 20+
- PostgreSQL 17+
- Docker
- Kubernetes cluster
- Helm 3+
-
Clone the repository
git clone https://github.com/codescalersinternships/Linktree-MohamedFadel.git cd Linktree-MohamedFadel
-
Backend Setup
cd backend # Create .env file # Install dependencies go mod download # Run the server go run cmd/server/main.go
-
Frontend Setup
cd frontend # Install dependencies npm install # Run development server npm run dev
-
Database Setup
# The application will automatically create the necessary tables # Just ensure PostgreSQL is running and the credentials in .env are correct
- Build and run using Docker Compose
docker-compose up --build
-
Build and push Docker images
# Build and push frontend docker build -t your-registry/frontend:latest ./frontend docker push your-registry/frontend:latest # Build and push backend docker build -t your-registry/backend:latest ./backend docker push your-registry/backend:latest
-
Update values.yaml with your image repositories
frontend: image: repository: your-registry/frontend tag: latest backend: image: repository: your-registry/backend tag: latest
-
Deploy using Helm
helm install linktree-app ./helm
DB_HOST=database
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=linktree
JWT_SECRET=your-secure-jwt-secret
VITE_API_URL=http://your-backend-url/api
- JWT-based authentication
- Password hashing
- CORS configuration
- Protected routes
- Environment variable configuration
The application is designed to be deployed on Kubernetes using Helm charts. The deployment includes:
- Separate services for frontend, backend, and database
- LoadBalancer service types for external access
- Persistent volume for PostgreSQL data
- Environment variable configuration