A powerful platform for indexing Solana blockchain data using Helius API and storing it in your own PostgreSQL database.
Click the image above to watch our walkthrough video
This platform allows developers to easily set up and manage Solana blockchain indexers using the Helius API and their own PostgreSQL database. The system provides a comprehensive set of features for configuring, monitoring, and managing blockchain data indexing in a user-friendly way through Helius API.
ποΈ Hosted Link: Live link
ποΈ API Docs: https://soumiks-organization.gitbook.io/galaxydb/
- π User Authentication: Secure registration and login system
- ποΈ Database Management: Connect and manage your PostgreSQL databases
- βοΈ Indexer Configuration: Create custom indexers with specific filters and transformations
- π Helius Integration: Seamless connection to Solana blockchain via Helius API
- β‘ Real-time Indexing: Process blockchain data as it happens
- π Customizable Transformations: Define how data should be structured in your database
- π Dashboard & Monitoring: Track performance and troubleshoot issues
- π¦ Node.js (v14 or higher)
- π PostgreSQL (v12 or higher)
- π Helius API key (sign up at https://helius.xyz)
- Clone the repository:
git clone https://github.com/yourusername/blockchain-indexing-platform.git
cd blockchain-indexing-platform/backend- Install dependencies:
npm install- Set up environment variables:
cp .env.example .envEdit the .env file with your database and Helius API credentials.
- Run migrations:
npm run migration:run- Start the server:
npm run start:dev- Navigate to the frontend directory:
cd ../frontend- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localEdit the .env.local file with your backend API URL.
- Start the development server:
npm run dev- π€ Register an account at
{your-domain}/auth/register - π Add a database connection with your PostgreSQL credentials
- π οΈ Create an indexer with your desired filters and transformations
βΆοΈ Activate the indexer to start receiving blockchain data- π Monitor the dashboard to see your indexed data in action
| Endpoint | Method | Description |
|---|---|---|
/auth/register |
POST | Create a new user account |
/auth/login |
POST | Authenticate and receive a JWT token |
/auth/profile |
GET | Get the current user's profile |
| Endpoint | Method | Description |
|---|---|---|
/database |
GET | List all database connections |
/database |
POST | Create a new database connection |
/database/test |
POST | Test database connection credentials |
/database/{id} |
GET | Get a specific database connection |
/database/{id} |
PATCH | Update a database connection |
/database/{id} |
DELETE | Delete a database connection |
| Endpoint | Method | Description |
|---|---|---|
/indexer |
GET | List all indexers |
/indexer |
POST | Create a new indexer |
/indexer/{id} |
GET | Get a specific indexer |
/indexer/{id} |
PATCH | Update an indexer |
/indexer/{id} |
DELETE | Delete an indexer |
/indexer/{id}/activate |
POST | Activate an indexer |
/indexer/{id}/deactivate |
POST | Deactivate an indexer |
/indexer/stats |
GET | Get overall indexing statistics |
/indexer/{id}/metrics |
GET | Get metrics for a specific indexer |
/indexer/{id}/logs |
GET | Get logs for a specific indexer |
| Endpoint | Method | Description |
|---|---|---|
/helius/webhooks |
GET | List all Helius webhooks |
/helius/webhook |
POST | Create a new Helius webhook |
/helius/webhook/{id} |
GET | Get a specific webhook |
/helius/webhook/{id} |
PUT | Update a webhook |
/helius/webhook/{id} |
DELETE | Delete a webhook |
/helius/nft/metadata |
POST | Get enhanced NFT metadata |
| Endpoint | Method | Description |
|---|---|---|
/webhook |
POST | Receive incoming webhook data from Helius |
const response = await fetch('https://your-api.com/database', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
name: 'Production Database',
host: 'db.example.com',
port: 5432,
username: 'dbuser',
password: 'dbpassword',
database: 'blockchain_data'
})
});
const data = await response.json();
console.log('Database connection created:', data);const response = await fetch('https://your-api.com/indexer', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
name: 'NFT Transactions Indexer',
description: 'Indexes all NFT transactions on Solana',
databaseConnectionId: 'db-connection-uuid-1',
schemaName: 'nft_data',
filters: {
programIds: [
'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'
],
transactionTypes: ['NFT_SALE']
},
transformations: {
includeMetadata: true,
customFields: [
{
name: 'seller_address',
path: 'events[0].source',
type: 'string'
},
{
name: 'buyer_address',
path: 'events[0].destination',
type: 'string'
},
{
name: 'sale_amount',
path: 'events[0].amount',
type: 'numeric'
}
]
}
})
});
const data = await response.json();
console.log('Indexer created:', data);blockchain-indexer/
βββ backend/
β βββ src/
β β βββ auth/ # Authentication module
β β βββ database/ # Database connection management
β β βββ helius/ # Helius API integration
β β βββ indexer/ # Core indexing logic
β β βββ webhook/ # Webhook processing
β β βββ main.ts # Application entry point
β βββ ...
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Next.js page components
β β βββ services/ # API service integrations
β β βββ ...
β βββ ...
βββ ...
- Fork and clone the repository
- Set up the backend and frontend as described in the installation section
- Create a new branch for your feature or bug fix
- Make your changes
- Run tests to ensure everything works correctly
- Submit a pull request
# Backend tests
cd backend
npm run test
# Frontend tests
cd frontend
npm run testContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Helius - For their powerful Solana blockchain API
- NestJS - For the backend framework
- Next.js - For the frontend framework
- All contributors who have helped shape this project
For any questions or support, please open an issue or contact the maintainers at Sweta Karar.