Plaza is a map-first, on-chain coordination hub where anyone can create, explore, and contribute to location-anchored impact projects. Each project deploys its own ERC20 token, tracks contributors and volunteers on-chain, and can receive ETH contributions directly through the dApp.
Plaza combines an App Router Next.js frontend with on-chain coordination primitives:
- Next.js 15 (App Router)
- TypeScript
- TailwindCSS + tailwind-merge + tailwindcss-animate
- shadcn/ui primitives (Radix UI)
- RainbowKit + wagmi + viem for wallet connectivity
- Mapbox GL for interactive location selection
- Framer Motion for motion design
- Solidity smart contracts (Foundry)
- OpenZeppelin (Ownable, ERC20, ReentrancyGuard)
- PlazaFactory deploys per-project
PlazaERC20s that track fundraising and volunteering - Deployed on Scroll Sepolia (Chain ID 534351)
- Node.js 18+
- npm/yarn/pnpm
- MetaMask or any other web3 wallet browser extension
- A Scroll Sepolia RPC endpoint and testnet funds for interactions
- Mapbox access token (for the location picker)
The Next.js app lives in
src/. The Solidity contracts live incontracts/.
git clone https://github.com/StabilityNexus/Plaza.git
cd Plaza/srcUsing your preferred package manager:
npm install
# or
yarn install
# or
pnpm installCreate src/.env.local and set your Mapbox token:
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=your_actual_token_hereIf you need a Mapbox token, see MAPBOX_SETUP.md for step-by-step guidance.
Start the app locally:
npm run dev
# or
yarn dev
# or
pnpm devNavigate to http://localhost:3000 to see the application. The landing page renders the interactive Mapbox experience; use the Create Project and Explorer routes to deploy and browse on-chain projects.
Contracts live in contracts/:
PlazaFactory.soldeploys project-specificPlazacontracts and tracks creators and deployments.Plaza.solmints per-project ERC20 tokens, tracks contributors/volunteers, collects a protocol fee, and holds raised ETH until withdrawn by the project owner.
Common commands (from contracts/):
forge build
forge test
forge fmtWe welcome contributions of all kinds! To contribute:
- Fork the repository and create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Run the development workflow commands to ensure code quality:
npm run lintnpm run build
- Push your branch (
git push origin feature/AmazingFeature). - Open a Pull Request for review.
If you encounter bugs, need help, or have feature requests:
- Please open an issue in this repository providing detailed information.
- Describe the problem clearly and include any relevant logs or screenshots.
We appreciate your feedback and contributions!
© 2025 The Stable Order.