An end-to-end wallet using Next, Postgres, Prisma, Express, Node, Turbo, Bcrypt, Next-Auth, Docker and Tailwind. It supports on-ramp from the bank, off-ramp to the bank and peer-to-peer transfers. Separate bank webhook handlers ensure transaction safety, high availability, and reliability. Used row-level locking to limit read/write operations to one transaction at a time.
https://swiftpay.rakhshan.online/
- On-ramp transaction from the bank.
- off-ramp transaction to the bank.
- Peer-to-Peer transfers.
- Transactions history.
- Secure authentication and session management using NextAuth.
- Separate Bank webhook handlers
- Language: TypeScript
- Frontend: Next.js, Tailwind CSS, and Shadcn
- Backend: Next.js, Node.js, Express.js, Zod, and Server actions
- Database: PostgreSQL, Prisma ORM
- Authentication: NextAuth
- Monorepo Management: TurboRepo
- Containerization & Deployment: Docker, AWS (EC2)
First, clone this repository to your local machine:
git clone https://github.com/your-username/your-repo-name.git
Change into the project directory:
cd your-repo-name
Install the required dependencies using npm:
yarn install
npx migrate dev
yarn run db:generate
Ensure you set up the following environment variables in a .env file at packages/db and at apps/web of the project:
- DATABASE_URL: URL for your PostgreSQL database
- NEXTAUTH_SECRET: Secret key for NextAuth authentication
You can start the app by running:
yarn run start-user-app
This project is deployed on AWS using Docker and Github workflows to automate the CI and CD workflow.