RIVETO is a modern, fullstack web application built for scalability, advanced analytics, and seamless payment integration.
It features a robust admin panel for management, user tracking, advanced UI components, and secure file/image upload via Cloudinary.
- Frontend: React, Tailwind CSS
- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose ODM)
- Payments: Razorpay Integration
- Tracking: Custom analytics & event tracking
- UI: Advanced, responsive design with Tailwind
- Image Uploads: Cloudinary for secure and performant media management
graph TD
A[User] -->|HTTP| B[React App]
B -->|REST API| C[Express.js Server]
C -->|ODM| D[(MongoDB Database)]
C -->|API| E[Razorpay]
C -->|API| H[Cloudinary]
B & C --> F[Admin Panel]
B --> G[Tracking & Analytics]
- π Admin Panel: Manage users, payments, analytics, and more
- π³ Razorpay Integration: Seamless and secure payment workflow
- π Advanced Tracking: User behavior, transactions, and event analytics
- π¨ Modern UI: Responsive, accessible, and beautiful interface (Tailwind)
- πΌοΈ Cloudinary Image Upload: Fast, secure, and optimized media storage
- π Authentication & Authorization: Secure user and admin access
- π RESTful API: Powerful backend for frontend and mobile clients
git clone https://github.com/Nsanjayboruds/RIVETO.git
cd RIVETO- Copy and edit environment files:
- For backend:
cp backend/.env.example backend/.env
- For frontend:
cp frontend/.env.example frontend/.env
- For backend:
- Fill in your MongoDB, Razorpay keys, Cloudinary credentials, JWT secrets, etc.
# In root
cd backend
npm install
cd ../frontend
npm install# Backend (Node.js/Express)
cd backend
npm run dev
# Frontend (React)
cd ../frontend
npm start- Backend: http://localhost:5000
- Frontend: http://localhost:3000
- Uses the cloudinary npm package.
- Secure image upload endpoints with authentication/middleware.
- Stores Cloudinary URLs in MongoDB model fields.
Sample Endpoint (Express.js):
// /backend/routes/upload.js
const { CloudinaryStorage } = require('multer-storage-cloudinary');
const multer = require('multer');
const cloudinary = require('cloudinary').v2;
// Cloudinary config (use your .env)
cloudinary.config({
cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
});
const storage = new CloudinaryStorage({
cloudinary,
params: {
folder: 'riveto_uploads',
allowed_formats: ['jpg', 'png', 'jpeg', 'svg', 'webp'],
},
});
const upload = multer({ storage });
router.post('/upload', upload.single('image'), (req, res) => {
res.json({ url: req.file.path });
});- Use a file input and upload images using a form or fetch/Axios to the backend
/uploadendpoint. - Store the returned Cloudinary URL for use in UI or database.
Sample Usage:
const handleUpload = async (event) => {
const formData = new FormData();
formData.append('image', event.target.files[0]);
const response = await fetch('/api/upload', { method: 'POST', body: formData });
const data = await response.json();
setImageUrl(data.url); // Save/display Cloudinary URL
};# Backend
cd backend
npm test
# Frontend
cd ../frontend
npm testRIVETO/
βββ backend/
β βββ controllers/
β βββ models/
β βββ routes/
β βββ middleware/
β βββ services/
β βββ .env.example
β βββ ...
βββ frontend/
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ hooks/
β β βββ utils/
β β βββ App.jsx
β βββ public/
β βββ .env.example
β βββ ...
βββ README.md
βββ ...
MONGODB_URI=
JWT_SECRET=
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
BASE_URL=http://localhost:5000
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
REACT_APP_API_URL=http://localhost:5000/api
REACT_APP_RAZORPAY_KEY=
- Fully responsive admin panel
- Advanced dashboard with analytics charts
- Dark/light mode with Tailwind CSS
- Custom components for user and payment management
- Razorpay checkout integrated for secure payments
- Payment status tracking and webhooks
- Custom event logging and analytics
- Admin dashboard for real-time tracking
- Fork the project
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -m 'Add feature') - Push to the branch (
git push origin feature/YourFeature) - Open a Pull Request
Please review CONTRIBUTING.md for details.
- Docker Compose and cloud deployment instructions coming soon!
- Easily deploy to Vercel (frontend) and Render or Heroku (backend).
MIT License. See LICENSE for details.
- Nishant Sanjay Borude β @Nsanjayboruds
Built with React, Tailwind, Node.js, Express, MongoDB, Razorpay, and Cloudinary