NovaSupport is a Stellar-native support platform focused on helping maintainers, creators, and developers receive transparent community funding through Stellar. The near-term goal is a submission-ready MVP with public profiles, wallet connection, and obvious Stellar Testnet integration.
- keep changes small and focused
- preserve the split between
frontend/,backend/, andcontract/ - prefer readable code over abstraction-heavy patterns
- document intent clearly when a feature is scaffolded but not complete
- do not switch the target network away from Stellar Testnet in MVP work
- keep Freighter as the first wallet unless the team explicitly expands wallet support
- write working test
- build project before contribution and before commiting.
cd frontend
cp .env.example .env.local
npm install
npm run devcd backend
cp .env.example .env
npm install
npm run db:generate
npm run db:migrate
npm run db:seed
npm run devcd contract
rustup target add wasm32-unknown-unknown
cargo testInstall Soroban CLI separately if you want to build, deploy, or inspect the contract on Stellar Testnet.
The on-chain logic lives in contract/contracts/support_page/src/lib.rs and is compiled to WASM for deployment on Stellar.
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Add the WASM compilation target
rustup target add wasm32-unknown-unknown
# Install Stellar CLI (includes Soroban support)
cargo install --locked stellar-cli --features optcd contract
cargo testAll tests must pass before opening a PR.
stellar contract buildOutput: target/wasm32-unknown-unknown/release/support_page.wasm
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/support_page.wasm \
--network testnet \
--source <your-alias><your-alias> refers to a Stellar CLI identity configured locally via stellar keys generate or stellar keys add.
- Add the function to
src/lib.rs - Add a unit test inside the
#[cfg(test)]block at the bottom of the file - Run
cargo test— all tests must pass before opening a PR
For local development, you can use Docker Compose to run PostgreSQL instead of setting up Supabase:
# Start the database
docker compose up -d
# Run migrations and seed data
cd backend
npm install
npm run db:generate
npm run db:migrate
npm run db:seedTo stop the container:
docker compose downTo wipe all data and start fresh:
docker compose down -vThe Docker container uses these default credentials (matching backend/.env.example):
- User:
novasupport - Password:
novasupport - Database:
novasupport - Port:
5432
- one concern per PR is ideal
- include screenshots for frontend UI changes
- include schema notes for Prisma changes
- mention any new environment variables explicitly
- keep naming consistent with
NovaSupport
All pull requests must pass the following CI status checks before merging to main:
- Frontend CI — installs dependencies, runs tests, and builds the Next.js app (
npm run build) - Backend CI — generates the Prisma client, applies migrations, runs backend tests (
npm run test), and compiles TypeScript (npm run build) - Contract CI — builds the contract for native and WASM targets (
cargo build --release) and runs contract tests (cargo test)
Each workflow runs on pull_request events for its respective directory and on push to main. Frontend CI and Backend CI test against Node.js 18.x and 20.x.
- Go to Settings → Branches on the GitHub repo
- Click Add branch ruleset (or edit the existing
mainrule) - Set the target branch to
main - Enable Require status checks to pass before merging
- Add the following required status checks:
Test and build (Node.js 18.x)(Frontend CI)Test and build (Node.js 20.x)(Frontend CI)Backend checks (Node 18.x)(Backend CI)Backend checks (Node 20.x)(Backend CI)Contract checks(Contract CI)
- Enable Require a pull request before merging
- Optionally enable Require conversation resolution before merging
- Save the ruleset