IBW Backend Service
Introduction
The IBW (India Blockchain Week) Backend Service is a comprehensive Go-based REST API built with Fiber framework. It provides a complete backend solution for managing conferences, events, speakers, quests, user connections, notifications, and more.
Technology Stack
- Language: Go 1.23.1
- Web Framework: Fiber v2
- Database: PostgreSQL (via GORM and pgx)
- Cache: Redis
- Authentication: JWT and Telegram Bot Token
- Storage: Azure Blob Storage, Cloudflare R2
- AI Integration: Azure OpenAI
- Logging: Zerolog
Key Features
Core Features
-
User Management
- User profiles and authentication via Telegram
- Social media integration (Twitter, LinkedIn)
- User connections and networking
- Profile enrichment with AI
-
Event Management
- Conference and event creation
- Event attendance tracking
- Side event requests
- Luma event integration
-
Quest System
- Gamified quest creation and management
- Task verification and approval
- Leaderboard system
- Quest reminders and notifications
-
Conference Management
- Multi-conference support
- Conference agenda management
- Speaker management
- Bulk attendee import
-
Notification System
- Real-time notifications
- Bulk notification sending
- Scheduled notifications
- Template-based notifications
-
Content Management
- Image and video uploads
- Cloudflare R2 integration
- Azure Blob Storage support
-
Social Features
- User connections and networking
- Social media enrichment
- Twitter and LinkedIn data fetching
Project Structure
ibw-app-service/
├── cmd/ # Application entry points
│ ├── server/ # Main server application
│ └── [other commands] # Utility commands
├── internal/
│ ├── config/ # Configuration management
│ ├── database/ # Database connection
│ ├── cache/ # Redis cache setup
│ ├── models/ # Domain models
│ ├── repositories/ # Data access layer
│ ├── services/ # Business logic layer
│ ├── handlers/ # HTTP handlers
│ ├── middleware/ # HTTP middleware
│ ├── routes/ # Route definitions
│ └── server/ # Server setup
├── migrations/ # Database migrations
├── pkg/ # Shared packages
│ ├── logger/ # Logging utilities
│ └── utils/ # Utility functions
└── docs/ # DocumentationArchitecture
The application follows a layered architecture:
- Handlers Layer: HTTP request/response handling
- Services Layer: Business logic and orchestration
- Repositories Layer: Data access abstraction
- Database Layer: PostgreSQL via GORM
This separation ensures:
- Clear separation of concerns
- Easy testing and mocking
- Maintainable codebase
- Scalable architecture
Getting Started
See the Setup Guide for detailed installation and configuration instructions.
API Documentation
The API is organized into several main areas:
- Authentication:
/api/v1/auth/* - Users:
/api/v1/users/* - Events:
/api/v1/events/* - Conferences:
/api/v1/conferences/* - Quests:
/api/v1/quests/* - Notifications:
/api/v1/notifications/* - Admin:
/api/v1/admin/*
For detailed API documentation, see the API Reference.