Vaultor
Solana presale platform
The Genesis presale platform for a perception-first prediction product. Solana wallet authentication with signature verification on the backend, a Django REST API, and a Next.js front end.
- Solana wallet auth with server-side signature checks
- Presale flow with referral tracking
- Django REST API with generated schema docs
- Roadmap, updates, FAQ and document management
A Next.js front end against a Django REST backend, where the authentication boundary is a wallet signature the server verifies itself with Ed25519, not a password.
- Django
- DRF
- PostgreSQL
- Next.js
- TypeScript
- Solana
How it is built
A Next.js front end against a Django REST backend, where the authentication boundary is a wallet signature the server verifies itself with Ed25519, not a password.
Stack
- Django 5.1 backend
- DRF backend
- drf-spectacular backend
- PyNaCl backend
- base58 backend
- PostgreSQL (psycopg2) data
- Gunicorn infra
- WhiteNoise infra
- Next.js client
- Solana Wallet Adapter integration
- solana/web3.js integration
Architecture
-
Next.js front end
client
- Solana Wallet Adapter
- solana/web3.js
- Framer Motion
- Lenis
-
Django REST API
service
- DRF
- drf-spectacular
-
Accounts
service
Verifies the wallet signature server-side
- PyNaCl
- base58
- Presale service
- Documents service
- Roadmap service
- Updates service
- FAQ service
- PostgreSQL datastore
- Solana wallet external
Flow
- Next.js front end Solana wallet Sign
- Next.js front end Django REST API HTTPS
- Django REST API Accounts
- Django REST API Presale
- Django REST API Documents
- Django REST API Roadmap
- Django REST API Updates
- Django REST API FAQ
- Django REST API PostgreSQL
API
REST
- Schema and documentation generated by drf-spectacular
Data
PostgreSQL
- Accessed through psycopg2, with the URL supplied by dj-database-url
Authentication
Solana wallet signature
- Ed25519 signatures verified on the server with PyNaCl
- Wallet addresses decoded with base58
Technical capabilities
- Presale flow with referral attribution
- Roadmap, updates, FAQ and document management
Infrastructure
- Procfile process types, with migrate and collectstatic in the release phase
- Gunicorn with three workers
- Pinned to Python 3.12
Notable decisions
-
Verify wallet signatures on the backend with PyNaCl
A client-side check proves nothing to the server
-
Run migrations and collectstatic in the release phase
A deploy that cannot migrate fails before it serves traffic