A Mantle-focused observability and transaction triage console for developers and non-technical stakeholders.
Production URL: https://m-obs.hackon.team/
Try it now - real-time monitoring of Mantle mainnet!
This is the main coordination repository. The application is split into separate repositories:
- 🔗 Main Repository: https://github.com/hackonteam/m-obs (this repo)
- 🗄️ Database: https://github.com/hackonteam/m-obs-database (Schema + Migrations)
- ⚙️ Backend: https://github.com/hackonteam/m-obs-backend (API + Worker)
- 🎨 Frontend: https://github.com/hackonteam/m-obs-frontend (SvelteKit Web App)
Each repository contains its own README with specific setup and deployment instructions.
M-OBS provides real-time monitoring, transaction analysis, and alerting for Mantle mainnet:
- Dashboard: Key metrics, failure rates, gas trends
- Transaction Explorer: Search, filter, and deep-dive into transactions
- Provider Health: RPC provider comparison and monitoring
- Alerting: Configurable rules for proactive monitoring
- Contract Watchlist: Track specific contracts with ABI-based decoding
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ SvelteKit │────►│ FastAPI │────►│ Supabase │
│ Frontend │ │ API │ │ PostgreSQL │
└─────────────┘ └──────────────┘ └─────────────┘
▲
│
┌──────┴──────┐
│ Worker │
│ (Async) │
└─────────────┘
▲
│
┌──────┴──────┐
│ Mantle │
│ Mainnet │
└─────────────┘
- Backend API: Python + FastAPI
- Worker: Python async (ingestion, metrics, alerts)
- Database: Supabase PostgreSQL
- Frontend: SvelteKit + Tailwind + DaisyUI
- Charts: uPlot
- Deployment:
- Backend: Render.com (API + Worker)
- Frontend: Vercel
- Database: Supabase
- Python 3.11+
- Node.js 20+
- pnpm 8+
- Supabase account
- Render.com account (for backend deployment)
- Vercel account (for frontend deployment)
-
Clone all repositories:
# Main repository (coordination + database) git clone https://github.com/hackonteam/m-obs.git cd m-obs # Backend repository (optional, for development) git clone https://github.com/hackonteam/m-obs-backend.git # Frontend repository (optional, for development) git clone https://github.com/hackonteam/m-obs-frontend.git
-
Set up database:
# From main repository cd m-obs/supabase # Install Supabase CLI (if not already installed) npm install -g supabase # Link to your project supabase link --project-ref <your-project-ref> # Run migrations supabase db push
-
Set up and run backend:
# See backend repository for detailed instructions cd m-obs-backend # Configure environment cp .env.example .env # Edit .env with your credentials # Terminal 1: Run Worker cd worker python -m venv venv && source venv/bin/activate pip install -e . python -m src.main # Terminal 2: Run API cd api python -m venv venv && source venv/bin/activate pip install -e . uvicorn src.main:app --reload
-
Set up and run frontend:
# See frontend repository for detailed instructions cd m-obs-frontend # Configure environment echo "PUBLIC_API_URL=http://localhost:8000" > .env # Install and run pnpm install pnpm dev
-
Access the application:
- Frontend: http://localhost:5173
- API: http://localhost:8000
- API Docs: http://localhost:8000/docs
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-service-role-key
# API
API_PORT=8000
CORS_ORIGINS=http://localhost:5173
# Worker
WORKER_ID=worker-1
POLL_INTERVAL_PROBE=30
POLL_INTERVAL_SCANNER=2
POLL_INTERVAL_ROLLUP=60Configured in supabase/migrations/00010_seed_rpc_endpoints.sql:
The project is organized into separate repositories:
Main Repository (this repo):
m-obs/
├── supabase/
│ └── migrations/ # Database schema and migrations (11 files)
├── docs/ # Project documentation
├── packages/
│ └── shared/ # Shared types (future use)
├── README.md # This file
├── IMPLEMENTATION.md # Implementation status
└── TASKS.md # Development roadmap
Backend Repository: https://github.com/hackonteam/m-obs-backend
m-obs-backend/
├── api/ # FastAPI REST API (11 endpoints)
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ └── models/ # Pydantic schemas
│ └── pyproject.toml
├── worker/ # Python async worker (4 pipelines)
│ ├── src/
│ │ ├── pipelines/ # Background pipelines
│ │ ├── providers/ # RPC client & manager
│ │ └── decoders/ # Error decoding
│ └── pyproject.toml
└── README.md # Backend-specific documentation
Frontend Repository: https://github.com/hackonteam/m-obs-frontend
m-obs-frontend/
├── src/
│ ├── routes/ # SvelteKit pages (6 pages)
│ │ ├── +page.svelte # Dashboard
│ │ ├── transactions/ # Transaction explorer
│ │ ├── providers/ # Provider health
│ │ └── alerts/ # Alert management
│ └── lib/
│ ├── api/ # API client
│ └── components/ # Reusable components
├── static/
└── README.md # Frontend-specific documentation
Main repository (database migrations):
cd m-obs/supabase
supabase migration new <migration_name>
# Edit the created file
supabase db pushBackend development:
cd m-obs-backend
# See backend README for detailed development guide
# Run tests: cd api && pytest
# Run tests: cd worker && pytestFrontend development:
cd m-obs-frontend
# See frontend README for detailed development guide
# Run tests: pnpm test
# Type check: pnpm checkM-OBS uses a split deployment architecture for optimal performance and scalability:
- Create project at https://supabase.com
- Link locally from this repository:
cd supabase supabase link --project-ref <your-project-ref> supabase db push
- Note your database URL for backend configuration
Deploy backend services (API + Worker) to Render.com:
- Fork/Clone: https://github.com/hackonteam/m-obs-backend
- Follow deployment guide: See
backend/README.mdin backend repository - Services to create:
m-obs-api- Web Service (FastAPI)m-obs-worker- Background Worker (Python)
- Configure environment variables with your Supabase credentials
- Note your API URL for frontend configuration
Detailed instructions: https://github.com/hackonteam/m-obs-backend#deployment-on-rendercom
Deploy frontend to Vercel:
- Fork/Clone: https://github.com/hackonteam/m-obs-frontend
- Follow deployment guide: See
frontend/README.mdin frontend repository - Import project to Vercel from GitHub
- Configure environment variable:
PUBLIC_API_URL=https://your-api.onrender.com - Deploy and note your Vercel URL
Detailed instructions: https://github.com/hackonteam/m-obs-frontend#deployment-on-vercel
After deploying all services:
-
Update backend CORS on Render to include your Vercel URL:
CORS_ORIGINS=https://your-app.vercel.app -
Test end-to-end:
- Visit your Vercel URL
- Check dashboard loads with data
- Verify API connectivity
- Monitor logs on Render and Vercel
┌──────────────────┐
│ Vercel │
│ (Frontend) │
│ SvelteKit │
└────────┬─────────┘
│ HTTPS
▼
┌──────────────────┐
│ Render.com │
│ ┌─────────────┐ │
│ │ API Service │ │────┐
│ └─────────────┘ │ │
│ ┌─────────────┐ │ │
│ │ Worker │ │────┤
│ └─────────────┘ │ │
└──────────────────┘ │
│ PostgreSQL
▼
┌──────────────────┐
│ Supabase │
│ PostgreSQL │
└──────────────────┘
See full API documentation at /docs endpoint or docs/API.md.
Key Endpoints:
GET /metrics/overview- Dashboard metricsGET /providers/health- RPC provider statusGET /txs- Transaction list with filtersGET /txs/{hash}- Transaction detailGET /alerts- Alert rules and eventsPOST /contracts- Add contract to watchlist
- User Requirements (URD)
- Software Requirements (SRS)
- Architecture
- Product Spec
- UI/UX Spec
- Implementation Tasks
HackOn Team Vietnam
M-OBS is developed and maintained by HackOn Team Vietnam, a dedicated team focused on building innovative blockchain infrastructure tools.
- Email: work.hackonteam@gmail.com
- Telegram: https://t.me/hackonteam
- Bernie Nguyen - Founder, Leader of HackOn Team Vietnam; Full-stack developer; Main developer
- Thien Vo - Front-end developer intern
- Canh Trinh - Researcher, Back-end developer intern
- Sharkyz Duong Pham - Business developer lead
- Hieu Tran - Business developer
This project is developed in collaboration with Phu Nhuan Builder.
- Email: phunhuanbuilder@gmail.com
Contributions are welcome! Each repository has its own contribution workflow:
- Fork https://github.com/hackonteam/m-obs-backend
- Create feature branch:
git checkout -b feature/your-feature - Make changes and add tests
- Submit pull request to backend repository
- Fork https://github.com/hackonteam/m-obs-frontend
- Create feature branch:
git checkout -b feature/your-feature - Make changes and add tests
- Submit pull request to frontend repository
- Fork this repository (main)
- Create migration in
supabase/migrations/ - Test locally with
supabase db push - Submit pull request
- Follow existing code style and conventions
- Add tests for new features
- Update documentation as needed
- Use semantic commit messages (feat:, fix:, docs:, etc.)
MIT License - see LICENSE file for details