Skip to content

OmBayus/tiklakur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

75 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Tiklakur - Multi-Tenant SaaS Platform

License: MIT Spring Boot Node.js Next.js

πŸš€ Project Overview

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).

Key Features

  • 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

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Landing Page  β”‚    β”‚   Admin Panel   β”‚    β”‚  Tenant Router  β”‚
β”‚   (Next.js)     β”‚    β”‚   (React/Vite)  β”‚    β”‚   (Express.js)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                       β”‚                       β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   Backend APIs  β”‚
                    β”‚   (Spring Boot) β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                       β”‚                       β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   PostgreSQL    β”‚    β”‚    MongoDB      β”‚    β”‚     Redis       β”‚
β”‚   (Orders)      β”‚    β”‚   (Auth/Data)  β”‚    β”‚   (Caching)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Technology Stack

Frontend

  • 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

Backend

  • Authentication Service: Spring Boot, Spring Security
  • Order Service: Spring Boot, Spring Data JPA
  • API Gateway: Express.js (Tenant Router)
  • Payment Integration: iyzico

Databases

  • PostgreSQL: Order management and user data
  • MongoDB: Authentication and application data
  • Redis: Caching and session management

Infrastructure

  • Message Broker: Apache Kafka
  • Monitoring: Grafana, Loki, Promtail
  • Containerization: Docker Compose
  • Process Management: PM2

πŸ“ Project Structure

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/

πŸš€ Quick Start

Prerequisites

  • Node.js 20.x
  • Java 17+
  • Docker & Docker Compose
  • Maven 3.8+

1. Clone the Repository

git clone https://github.com/OmBayus/tiklakur.git
cd tiklakur

2. Start Infrastructure Services

# 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

3. Start Backend Services

# 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

4. Start Frontend Applications

# 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 start

πŸ”§ Configuration

Environment Variables

Create .env files in each service directory:

Backend Services

# 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

Frontend Services

# API Endpoints
NEXT_PUBLIC_API_URL=http://localhost:8080
VITE_API_URL=http://localhost:8080

πŸ“Š Monitoring

Grafana Dashboard

Kafka UI

MongoDB Express

πŸ—οΈ Development

Adding New Templates

  1. Create a new directory in tenant-router/
  2. Build your template using React/Next.js
  3. Add the template configuration to users.json
  4. Update the tenant router to serve the new template

Microservice Development

Each Spring Boot service follows a standard structure:

src/
β”œβ”€β”€ main/
β”‚   β”œβ”€β”€ java/
β”‚   β”‚   └── com/tiklakur/
β”‚   β”‚       β”œβ”€β”€ controller/
β”‚   β”‚       β”œβ”€β”€ service/
β”‚   β”‚       β”œβ”€β”€ repository/
β”‚   β”‚       └── model/
β”‚   └── resources/
β”‚       └── application.yml

🀝 Contributing

Team Members

  • @OmBayus - Omer Bayramcavus
  • @brkybzkrt - Ahmet Berkay Bozkurt
  • @bahadiracnr - BahadΔ±r Acuner

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Support

For support and questions:

  • Create an issue on GitHub
  • Contact the development team
  • Check the documentation in each service directory

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages