A digital platform connecting traditional artists, craftspeople, organizers, sponsors, and audiences through employment and collaboration.
Traditional artists and craftspeople often struggle to find work, funding, and customers in a digital world dominated by generic social platforms. KalaSetu aims to bridge this gap by providing a dedicated digital ecosystem tailored to the cultural sector.
KalaSetu enables Artists, Craftspeople, Organizers, Sponsors, and Audiences to discover opportunities, collaborate, and build meaningful professional connections through a platform designed specifically for their needs.
This repository contains the complete KalaSetu project, including both the frontend and backend applications.
kalasetu/
├── kalasetu-backend/ # Go backend
└── kalasetu-frontend/ # Kotlin Multiplatform frontend
KalaSetu
│
┌────────────┴────────────┐
│ │
▼ ▼
kalasetu-frontend kalasetu-backend
Kotlin Multiplatform Go + Gin
KalaSetu Backend follows a layered architecture that separates HTTP handling, business logic, and database access.
flowchart TD
A["main.go"] --> B["app/app.go<br/>Bootstrap & Dependency Injection"]
B --> C["Routes"]
C --> D["Handlers"]
D --> E["Services"]
E --> F["Repositories"]
F --> G[("PostgreSQL")]
B --> H["Configuration"]
B --> I["Database Migrations"]
D -. Protected Routes .-> J["JWT Middleware"]
E --> K["GraphQL"]
| Layer | Responsibility |
|---|---|
| Routes | Maps HTTP endpoints to handler functions |
| Handlers | Handles HTTP requests and responses |
| Services | Implements business logic |
| Repositories | Performs database operations using raw SQL |
Supporting components include:
- JWT Authentication Middleware
- Embedded SQL Migrations
- GraphQL Schema & Resolvers
- Configuration Management
| Feature | Description |
|---|---|
| Authentication | User registration and login using JWT authentication |
| Refresh Tokens | Secure refresh token rotation |
| User Onboarding | Collects profile information during onboarding |
| Role Management | Supports different user roles within the platform |
| Application Submission | Allows users to submit applications |
| GraphQL Integration | GraphQL server powered by gqlgen |
| Component | Technology |
|---|---|
| Language | Go |
| Framework | Gin |
| Database | PostgreSQL |
| Authentication | JWT |
| GraphQL | gqlgen |
| Containerization | Docker & Docker Compose |
| Component | Technology |
|---|---|
| Language | Kotlin |
| Framework | Kotlin Multiplatform |
| Targets | Android, iOS |
- Docker
- Docker Compose
Clone the repository:
git clone https://github.com/amfoss/kalasetu.git
cd kalasetuNavigate to the backend:
cd kalasetu-backendConfigure the environment variables:
cp .env.example .envUpdate the values in .env as required.
Build and start the backend services:
docker compose build
docker compose upThe backend automatically runs database migrations during startup.
Navigate to the frontend project:
cd kalasetu-frontendKalaSetu Frontend is built using Kotlin Multiplatform, targeting:
- Android
- iOS
Refer to the frontend documentation inside kalasetu-frontend for platform-specific build and run instructions.
kalasetu-backend/
├── app/
├── config/
├── graph/
├── handlers/
├── middlewares/
├── migrations/
├── repos/
├── routes/
├── services/
└── main.go
We welcome contributions from the community.
-
Fork the repository.
-
Clone your fork.
git clone https://github.com/<your-username>/kalasetu.git- Create a feature branch.
git checkout -b feature/my-feature-
Make your changes.
-
Commit using meaningful commit messages.
feat: add onboarding endpoint
fix: validate application payload
docs: improve setup guide
- Push your branch.
git push origin feature/my-feature- Open a Pull Request with a clear description of your changes.
KalaSetu is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
See the LICENSE file for more information.