A fusion of gratitude and DeFi β appreciation powered by decentralized finance.
π Live Site Β |Β π₯ Demo Video
GratiFi is a decentralized web application that empowers users, creators, and artisans to receive appreciation through crypto tips on the Solana blockchain. By combining modern Web3 technologies with seamless UX and media-sharing capabilities, GratiFi makes gratitude borderless and impactful.
A key part of GratiFi's user experience is its integration with Civic Auth, a decentralized identity protocol that provides secure and privacy-respecting authentication.
- Users log in via Civicβs Web3 modal, allowing for identity verification without traditional sign-up.
- Upon successful login, GratiFi retrieves a
userIdand session token via Civic's API. - This authenticated identity is used to personalize the userβs session and associate it with their tipping activity.
- After login, Civic automatically provisions a non-custodial embedded wallet for each user.
- The wallet is tied to the Civic identity and allows users to send and receive SOL tips instantly.
- No browser extensions or manual private key handling required.
- All transactions (tipping, receiving) are signed transparently via this embedded wallet, ensuring security and ease of use.
- Onboarding Simplicity: Users can start tipping or receiving appreciation in seconds.
- Security & Privacy: Identity is verified without compromising user data.
- Wallet Abstraction: Users donβt need to understand wallets or key management.
- Improved UX: A seamless Web3 experience that feels like Web2.
GratiFi leverages the power of Civic to bridge identity, authentication, and wallet provisioning β making gratitude seamless and secure in the decentralized world.
- React 18 + TypeScript
- Vite β Blazing-fast build tool
- TailwindCSS β Utility-first styling
- Framer Motion & Lottie β Animations
- Civic Auth β Web3 authentication
- Solana / Web3.js β Blockchain interaction
- TanStack Query β Data fetching + caching
- Resend - Emailing service
- Cloudinary β Media storage (images/videos)
- Node.js + Express
- TypeScript
- PostgreSQL with Prisma ORM
GratiFi/
βββ backend/ # Node.js + Express backend
β βββ src/
β β βββ controllers/ # Route handlers
β β βββ middlewares/ # Express middlewares (auth, error handling, etc.)
β β βββ models/ # Prisma schema/models
β β βββ routes/ # API route definitions
β β βββ services/ # Business logic
β β βββ utils/ # Helpers/utilities
β β βββ app.ts # Express app initialization
β βββ prisma/
β β βββ schema.prisma # Prisma DB schema
β βββ .env # Backend environment variables
β βββ package.json
β βββ tsconfig.json
β
βββ frontend/ # React + Vite frontend
β βββ src/
β β βββ assets/ # Images, videos, Lottie files
β β βββ components/ # Reusable UI components
β β βββ features/ # Feature-based folders (e.g., auth, posts, wallet)
β β βββ hooks/ # Custom hooks
β β βββ pages/ # Route-level pages
β β βββ services/ # API logic (e.g., React Query hooks)
β β βββ types/ # TypeScript types/interfaces
β β βββ utils/ # Utility functions
β β βββ App.tsx
β β βββ main.tsx
β βββ public/ # Public assets
β βββ .env # Frontend environment variables
β βββ index.html
β βββ package.json
β βββ vite.config.ts
β
βββ README.md
βββ .gitignore
βββ LICENSE
git clone https://github.com/DhanteyUD/GratiFi.git
cd GratiFi
Frontend:
cd frontend
npm installBackend:
cd ../backend
npm installCreate .env files in both frontend/ and backend/.
Backend .env:
PORT=4000
NODE_ENV=development
RESEND_API_KEY=
JWT_SECRET=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
CLOUDINARY_URL=
DATABASE_URL=
Frontend .env:
VITE_API_URL=http://localhost:4000/api/v1
VITE_RAPIDAPI=
VITE_CLIENT_ID=
VITE_RAPID_SECTION_ID=
Backend:
cd backend
npm run devFrontend:
cd ../frontend
npm run dev-
Frontend:
http://localhost:5173 -
Backend:
http://localhost:4000
Frontend:
cd frontend
npm run buildBackend:
cd backend
npm run build-
Frontend:
Vercel -
Backend:
Railway
-
Connect wallet via Civic Auth
-
Browse GratiStars on the feed
-
View GratiStars profiles
-
Send micro-tips (SOL) to appreciate the content
-
View wallet balance and transaction history
-
Share your creative work
| Name | Role | GitHub Handle |
|---|---|---|
| Clinton Otse | Full Stack Developer | @DhanteyUD |
3rd prize winner of the Civic Hackathon! π
NOTE: This App is still under active development