Open-source infrastructure for Web3 events and conferences.
Gathera is a comprehensive, open-source platform designed to power Web3 events and conferences on the Stellar blockchain. It combines Soroban smart contract-based ticketing, decentralized identity verification, and seamless event management to create a trustless, transparent ecosystem for organizers and attendees.
- Blockchain Ticketing: Soroban-powered NFT tickets with anti-scalping mechanisms
- Decentralized Identity: Stellar-based identity verification for attendees
- Event Management: Full-featured dashboard for organizers
- Fast Finality: 5-second transaction finality on Stellar
- Soroban Integration: Rust-based smart contracts with WebAssembly execution
Gathera/
├── app/
│ ├── backend/ # NestJS API server
│ └── frontend/ # Next.js 16 + React 19 application
├── contract/ # Smart contracts (Rust/Soroban)
│ ├── contracts/ # Rust smart contract source
│ ├── scripts/ # Deployment and utility scripts
│ └── test/ # Contract test suites
- Platform: Stellar Soroban
- Language: Rust (compiles to WebAssembly)
- SDK: Soroban Rust SDK
- Testing: Soroban CLI + Rust test framework
- Deployment: Soroban CLI
- Framework: NestJS 11
- Language: TypeScript 5.7
- Testing: Jest 30
- API: RESTful + GraphQL ready
- Framework: Next.js 16 (App Router)
- UI Library: React 19
- Styling: Tailwind CSS 4
- Font: Geist (Vercel)
- Node.js 20.0.0+
- npm 10+
- Rust 1.74+
- Soroban CLI
Before running the project, copy the example environment files and configure them for your environment:
# Root environment variables
cp .env.example .env
# Backend environment variables
cp app/backend/.env.example app/backend/.env
# Frontend environment variables
cp app/frontend/.env.example app/frontend/.env.local
# Image service environment variables
cp app/image-service/.env.example app/image-service/.envEdit each .env file and fill in the required values. See the comments in each .env.example file for details on each variable.
# Clone the repository
git clone https://github.com/Gatheraa/Gathera.git
cd Gathera
# Install all workspace dependencies from the repository root
npm install
# Optional: install dependencies per package
cd contract && npm install
cd ../app/backend && npm install
cd ../frontend && npm installnpm run install- install all workspace dependencies from the root lockfilenpm run build- build all workspace packages and compile contractsnpm run lint- lint all workspace packagesnpm run format- format all workspace packages with available workspace format scriptsnpm run test- run backend, integration, and contract testsnpm run clean- remove workspace install artifactsnpm run workspace:status- list workspace packages
Package-specific workspace commands:
npm run format:backend/npm run format:frontend- run formatting in named workspace packagesnpm run test:integration- run integration tests defined intests/integration
This repository includes root-level formatting and linting configuration:
.editorconfig,.prettierrc,.eslintrc.json,.eslintignore, and.prettierignore. Runnpm run installfrom the repository root and avoid running package installs from individual subfolders unless you need package-specific dependency changes.
Smart Contracts:
cd contract
# Build contracts
cargo build --target wasm32-unknown-unknown --release
# Test contracts
cargo test
# Deploy to testnet
soroban contract deploy --wasm target/wasm32-unknown-unknown/release/[contract].wasm --source [key] --network testnetBackend:
cd app/backend
npm run start:devFrontend:
cd app/frontend
npm run devThe smart contracts are written in Rust for Stellar Soroban, compiling to WebAssembly for efficient execution on the Stellar network.
cd contract
# Build all contracts
cargo build --target wasm32-unknown-unknown --release
# Run tests
cargo test
# Deploy to futurenet
soroban contract deploy \
--wasm target/wasm32-unknown-unknown/release/gathera_event.wasm \
--source [your_key] \
--network futurenet
# Invoke contract function
soroban contract invoke \
--id [contract_id] \
--source [your_key] \
--network futurenet \
-- \
create_event \
--organizer [address] \
--name "Event Name"The NestJS backend provides RESTful APIs for event management, user authentication, and blockchain interactions.
cd app/backend
# Development mode
npm run start:dev
# Production build
npm run build
npm run start:prod
# Run tests
npm run test
npm run test:e2eThe Next.js frontend offers a modern, responsive UI for event discovery, ticket purchasing, and attendee management.
cd app/frontend
# Development server
npm run dev
# Production build
npm run build
npm run startWe welcome contributions from the community! Please see our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Architecture Overview
- Architectural Decision Records (ADRs)
- Security Audit Report
- Contract Documentation
- Built with Stellar Soroban
- Powered by Stellar
- Frontend by Next.js
- Backend by NestJS