Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Moneta MFS Wallet banner

Live App GitHub Node.js


📖 Overview

Moneta is a premium, full-stack Mobile Financial Services (MFS) wallet that simulates real-world e-banking and digital cash transfers. Built with a Next.js 16 App Router frontend, a Node.js / Express backend API, and MongoDB Atlas for cloud persistence — it delivers a secure and intuitive digital banking experience in a responsive mobile-app shell.

Live athttps://moneta-topaz.vercel.app


🛠️ Technologies Used

Frontend (moneta-client)

Technology Version Role
Next.js 16.2.10 React framework (App Router)
React 19.2.4 Core UI library
Tailwind CSS ^4 Utility-first CSS
DaisyUI ^5.6.10 Component library with light/dark themes
Better Auth ^1.6.23 Authentication client
React Toastify ^11.1.0 Toast notifications
Fontshare Premium typography (Satoshi + Clash Display)

Backend (moneta-server)

Technology Version Role
Node.js ≥18 Runtime
Express.js ^4.21.2 HTTP server & routing
MongoDB Atlas Cloud-hosted database
Mongoose ^8.9.5 MongoDB ODM
Better Auth ^1.6.23 Authentication engine
dotenv ^16.4.5 Environment variable loader
cors ^2.8.5 Cross-origin request handling

✨ Core Features

🔒 Security & Authentication

  • Credentials Login — session-based auth via Better Auth with hashed phone + password
  • Secure Registration — Name, Phone, Password, and 4-digit security PIN sign-up flow
  • Mandatory PIN Checks — every financial action (deposit, transfer, cashout, bills) requires PIN verification
  • Show/Hide PIN Toggle — visual masking control for field reassurance

💸 Wallet & Financial Services

  • Live Balance Card — real-time account balance fetched from MongoDB
  • Add Money — simulated card (Visa/Mastercard) and bank deposit integrations
  • Cash Out — withdraw funds with a standard 1.85% agent fee calculation
  • Send Money — atomic peer-to-peer transfers using phone number identifiers
  • Pay Bill — settle utility bills (Electricity, Water, Gas, Internet) with biller and subscriber validation
  • Transaction Ledger — full history with category filters (Add, Cashout, Transfer, Bill, Bonus) and name/reference search

🎁 Promo System

  • Claim Bonus — redeem promo codes (WELCOME50 → +$50) verified against database, one-time use enforced

🎨 UI & Visual

  • Mobile App Shell — styled viewport wrapper mimicking a modern smartphone frame with elevation shadows
  • DaisyUI v5 Themes — built-in light/dark mode switcher
  • Responsive Sliding Action Sheets — bottom-slide modal panels for all financial actions

📂 Repository Layout

moneta/
├── README.md               # This file
├── .gitignore              # Root Git config
├── moneta-client/          # Next.js App Router frontend
│   ├── src/
│   │   ├── app/            # Routes, layouts, pages
│   │   └── components/     # UI components
│   ├── public/
│   ├── package.json
│   └── next.config.mjs
└── moneta-server/          # Express.js REST API
    ├── routes/wallet.js    # All wallet API endpoints
    ├── models/             # Mongoose schemas
    ├── middleware/         # Auth middleware
    ├── auth.js             # Better Auth config
    ├── db.js               # MongoDB connection
    ├── server.js           # Entry point
    ├── seed.js             # Database seeder
    └── package.json

🚀 Run Locally

Prerequisites

  • Node.js v18 or higher
  • npm v9 or higher
  • A MongoDB Atlas account (free tier works)

1 — Clone the Repository

git clone https://github.com/iMoloy/moneta.git
cd moneta

2 — Backend Server Setup

cd moneta-server
npm install

Create your environment file:

cp .env.example .env

Open .env and fill in the required values:

# MongoDB Atlas connection string
MONGODB_URI=mongodb+srv://<user>:<password>@cluster.mongodb.net/moneta

# Better Auth — generate with: openssl rand -hex 32
BETTER_AUTH_SECRET=your_secret_key_here

# URL of the running frontend (for CORS)
CLIENT_URL=http://localhost:3000

Start the backend:

npm run dev

Server runs on http://localhost:5000

(Optional) Seed the database with demo billers and deposit sources:

npm run seed

3 — Frontend Client Setup

cd ../moneta-client
npm install

Create your environment file:

cp .env.example .env.local

Open .env.local and set the backend URL:

NEXT_PUBLIC_API_URL=http://localhost:5000
BETTER_AUTH_SECRET=your_secret_key_here   # must match server
NEXT_PUBLIC_APP_URL=http://localhost:3000

Start the frontend:

npm run dev

App runs on http://localhost:3000


Available Scripts

moneta-client

Command Description
npm run dev Start development server with HMR
npm run build Build production bundle
npm run start Serve production build
npm run lint Run ESLint

moneta-server

Command Description
npm run dev Start server with --watch (auto-restart)
npm run start Start production server
npm run seed Seed MongoDB with demo data

🔗 Resources


Footer Made with ❤️ by Moloy Krishna Paul

About

A mobile-first financial wallet app called Moneta. Built with Next.js frontend and Express/Mongo backend, it supports wallet balance, transfers, cashout, bill payments, PIN validation, promo bonuses, and a mobile UI shell.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages