Backend
Overview

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

  1. User Management

    • User profiles and authentication via Telegram
    • Social media integration (Twitter, LinkedIn)
    • User connections and networking
    • Profile enrichment with AI
  2. Event Management

    • Conference and event creation
    • Event attendance tracking
    • Side event requests
    • Luma event integration
  3. Quest System

    • Gamified quest creation and management
    • Task verification and approval
    • Leaderboard system
    • Quest reminders and notifications
  4. Conference Management

    • Multi-conference support
    • Conference agenda management
    • Speaker management
    • Bulk attendee import
  5. Notification System

    • Real-time notifications
    • Bulk notification sending
    • Scheduled notifications
    • Template-based notifications
  6. Content Management

    • Image and video uploads
    • Cloudflare R2 integration
    • Azure Blob Storage support
  7. 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/                  # Documentation

Architecture

The application follows a layered architecture:

  1. Handlers Layer: HTTP request/response handling
  2. Services Layer: Business logic and orchestration
  3. Repositories Layer: Data access abstraction
  4. 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.