Tiklakur is a comprehensive multi-tenant SaaS platform that allows users to purchase website templates and get their own branded subdomain. Users can select from various templates, make purchases, and instantly get their website accessible via a custom subdomain (e.g., example.tiklakur.com).
- Template Marketplace: Browse and purchase website templates
- Multi-Tenant Architecture: Each user gets their own subdomain
- Admin Panel: Comprehensive dashboard for managing templates and users
- Custom Request System: Users can request custom development services
- Payment Integration: Secure payment processing with iyzico
- Real-time Monitoring: Grafana, Loki, and Promtail for observability
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Landing Page β β Admin Panel β β Tenant Router β
β (Next.js) β β (React/Vite) β β (Express.js) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
β
βββββββββββββββββββ
β Backend APIs β
β (Spring Boot) β
βββββββββββββββββββ
β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β PostgreSQL β β MongoDB β β Redis β
β (Orders) β β (Auth/Data) β β (Caching) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Landing Page: Next.js 15, React 19, TypeScript, Tailwind CSS
- Admin Panel: React 18, Vite, Material-UI, TypeScript
- UI Components: Radix UI, Framer Motion, React Hook Form
- Authentication Service: Spring Boot, Spring Security
- Order Service: Spring Boot, Spring Data JPA
- API Gateway: Express.js (Tenant Router)
- Payment Integration: iyzico
- PostgreSQL: Order management and user data
- MongoDB: Authentication and application data
- Redis: Caching and session management
- Message Broker: Apache Kafka
- Monitoring: Grafana, Loki, Promtail
- Containerization: Docker Compose
- Process Management: PM2
tiklakur/
βββ admin-panel/ # React admin dashboard
βββ client/ # Next.js landing page
βββ backend/ # Spring Boot microservices
β βββ auth/ # Authentication service
β βββ order/ # Order management service
β βββ special_request/ # Custom request service
β βββ template/ # Template management
β βββ parent/ # Common dependencies
βββ tenant-router/ # Express.js subdomain router
β βββ server/ # Router server
β βββ portfolio/ # Portfolio template
β βββ project1/ # Template 1
β βββ project2/ # Template 2
βββ compose/ # Docker Compose configurations
βββ mongodb.yaml
βββ kafka.yaml
βββ grafana-loki-promtail/
- Node.js 20.x
- Java 17+
- Docker & Docker Compose
- Maven 3.8+
git clone https://github.com/OmBayus/tiklakur.git
cd tiklakur# Start MongoDB
docker-compose -f compose/mongodb.yaml up -d
# Start Kafka
docker-compose -f compose/kafka.yaml up -d
# Start Monitoring Stack
docker-compose -f compose/grafana-loki-promtail/docker-compose.yml up -d# Build parent project
cd backend/parent
mvn clean install
# Start Auth Service
cd ../auth
mvn spring-boot:run
# Start Order Service
cd ../order
mvn spring-boot:run# Start Landing Page
cd client
npm install
npm run dev
# Start Admin Panel
cd ../admin-panel
npm install
npm run dev
# Start Tenant Router
cd ../tenant-router/server
npm install
npm startCreate .env files in each service directory:
# Database
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/tiklakur
SPRING_DATA_MONGODB_URI=mongodb://localhost:27017/tiklakur
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# Kafka
KAFKA_BOOTSTRAP_SERVERS=localhost:9092
# JWT
JWT_SECRET=your-jwt-secret# API Endpoints
NEXT_PUBLIC_API_URL=http://localhost:8080
VITE_API_URL=http://localhost:8080- URL: http://localhost:3000
- Username: admin
- Password: admin
- Create a new directory in
tenant-router/ - Build your template using React/Next.js
- Add the template configuration to
users.json - Update the tenant router to serve the new template
Each Spring Boot service follows a standard structure:
src/
βββ main/
β βββ java/
β β βββ com/tiklakur/
β β βββ controller/
β β βββ service/
β β βββ repository/
β β βββ model/
β βββ resources/
β βββ application.yml
- @OmBayus - Omer Bayramcavus
- @brkybzkrt - Ahmet Berkay Bozkurt
- @bahadiracnr - BahadΔ±r Acuner
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Contact the development team
- Check the documentation in each service directory