Skip to content

krupal-036/LumiVizStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

69 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LumiVizStack

LumiVizStack

Transform Data into Actionable Insights

The fastest way to visualize complex JSON structures.
No configuration needed - just paste, connect, or upload your data.

Live Demo MERN Stack Last Commit Repo Size

Frontend Backend Framework Database


๐Ÿ“Œ Overview

LumiVizStack is a full-stack web application that converts raw JSON data into beautiful, interactive charts and visualizations. Built with the MERN stack, it supports multiple input methods, secure JWT authentication, visualization history, and public shareable links โ€” all in one unified platform.

Developed as part of the B.E. Computer Engineering final internship project at Sal Engineering and Technical Institute, Ahmedabad (Gujarat Technological University, 2025โ€“26).


โœจ Features

  • Multi-Source JSON Input โ€” Paste raw JSON, upload a .json file, or fetch from an external API URL
  • Interactive Visualizations โ€” Bar, Line, Area, and Pie charts with real-time rendering
  • Secure Authentication โ€” JWT-based login/register with bcrypt password hashing and 30-day token sessions
  • Role-Based Access Control (RBAC) โ€” Separate User and Admin roles with distinct permissions
  • Visualization History โ€” Save up to 10 visualizations per user; soft-delete support
  • Public Shareable Links โ€” Generate unique public URLs to share specific visualizations without login
  • Admin Panel โ€” Manage users, view system stats, configure login/signup access, and handle deletions
  • Credits System โ€” Usage tracked via a credit mechanism per visualization save
  • Responsive UI โ€” Clean, responsive design built with Tailwind CSS

๐Ÿ› ๏ธ Tech Stack

Layer Technology
Frontend React.js, Tailwind CSS, React Router DOM, Recharts
Backend Node.js, Express.js
Database MongoDB, Mongoose ODM
Authentication JSON Web Token (JWT), bcrypt
Build Tool Vite
Deployment Vercel
Dev Tools Postman, ESLint, VS Code, Git & GitHub

๐Ÿš€ Getting Started

Prerequisites

  • Node.js v18+
  • MongoDB (local or Atlas)
  • npm or yarn

1. Clone the Repository

git clone https://github.com/krupal-036/LumiVizStack.git
cd LumiVizStack

2. Backend Setup

cd backend
npm install

Create a .env file in the backend/ directory:

PORT=3000
MONGO_URI=mongodb_url

DB_USERS=lumiviz_users_db_example
DB_ADMIN=lumiviz_admin_db_example
DB_VIZ_CONTEXT=lumiviz_viz_public_db_example
DB_VIZ_HISTORY=lumiviz_viz_history_db_example

JWT_SECRET=your_jwt_secret_key
NODE_ENV=development

Start the backend server:

npm start

3. Frontend Setup

cd ../frontend
npm install

Create a .env file in the frontend/ directory:

mode=development
VITE_ENABLE_PROXY=true
VITE_API_URL=http://localhost:5000

Start the development server:

npm run dev

The app will be available at http://localhost:5173.


๐Ÿ“ Project Structure

LumiVizStack/
โ”‚
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ common/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AdminRoute.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ BackToTop.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Button.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Loader.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Modal.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProtectedRoute.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SmartCell.jsx
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layout/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Footer.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Navbar.jsx
โ”‚   โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ visualizations/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CardView.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ChartView.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ FlowChart.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GraphView.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ TableView.jsx
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ TreeView.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Features.jsx
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AlertContext.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AuthContext.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ThemeContext.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ VizContext.jsx
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ customHooks.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ useFetch.js
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ useTheme.js
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ About.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ AdminPanel.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ApiDocs.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Guide.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ History.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Login.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ NotFound.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ PublicView.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Register.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ UserProfile.jsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Visualizer.jsx
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ dataParser.js
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ mockData.js
โ”‚   โ”‚   โ”‚
โ”‚   โ”‚   โ”œโ”€โ”€ App.css
โ”‚   โ”‚   โ”œโ”€โ”€ App.jsx
โ”‚   โ”‚   โ”œโ”€โ”€ index.css
โ”‚   โ”‚   โ””โ”€โ”€ main.jsx
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ .env
โ”‚   โ”œโ”€โ”€ .env_EXAMPLE
โ”‚   โ”œโ”€โ”€ eslint.config.js
โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”œโ”€โ”€ package-lock.json
โ”‚   โ”œโ”€โ”€ package.json
โ”‚   โ””โ”€โ”€ vite.config.js
โ”‚
โ”œโ”€โ”€ middleware/
โ”‚   โ”œโ”€โ”€ adminAuth.js
โ”‚   โ”œโ”€โ”€ apiLimiter.js
โ”‚   โ”œโ”€โ”€ authValidation.js
โ”‚   โ”œโ”€โ”€ config.js
โ”‚   โ”œโ”€โ”€ serveFrontend.js
โ”‚   โ”œโ”€โ”€ siteGuard.js
โ”‚   โ””โ”€โ”€ verifyToken.js
โ”‚
โ”œโ”€โ”€ models/
โ”‚   โ”œโ”€โ”€ History.js
โ”‚   โ”œโ”€โ”€ SystemSettings.js
โ”‚   โ””โ”€โ”€ User.js
โ”‚
โ”œโ”€โ”€ routes/
โ”‚   โ”œโ”€โ”€ admin.js
โ”‚   โ”œโ”€โ”€ auth.js
โ”‚   โ”œโ”€โ”€ history.js
โ”‚   โ””โ”€โ”€ profile.js
โ”‚
โ”œโ”€โ”€ public/
โ”‚
โ”œโ”€โ”€ .env
โ”œโ”€โ”€ .env_EXAMPLE
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ data.json
โ”œโ”€โ”€ db.js
โ”œโ”€โ”€ index.js
โ”œโ”€โ”€ package-lock.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ vercel.json



๐Ÿ”Œ API Endpoints (Summary)

Method Endpoint Description Auth Required
POST /api/auth/register Register new user โŒ
POST /api/auth/login Login & receive JWT โŒ
GET /api/history Get user's saved visualizations โœ…
POST /api/history Save a new visualization โœ…
DELETE /api/history/:id Soft-delete a visualization โœ…
GET /api/history/share/:shareId Access public visualization โŒ
GET /api/admin/users List all users โœ… Admin
PATCH /api/admin/settings Toggle login/signup access โœ… Admin

Rate limits: 5 requests/window on auth routes, 100 requests/window on all other routes.


๐Ÿ—ƒ๏ธ Database Schema

User

username, email, password (hashed), credits, role (user/admin), isDeleted, createdAt

History

userId (ref: User), title, type, data, rawInput, urlInput, inputType,
isPublic, shareId, isDeleted, createdAt

SystemSettings

configName, isLoginEnabled, isSignupEnabled, createdAt

โœ… Test Coverage

20 test cases verified covering registration, login, JSON validation, visualization save/share/delete, admin controls, rate limiting, credit enforcement, and access control. All tests passed.


โš ๏ธ Limitations

  • Supports structured JSON only (no CSV, XML, etc.)
  • Maximum 10 saved visualizations per user (credit-based)
  • Performance may degrade for very large JSON inputs
  • Limited to 4 chart types (Bar, Line, Area, Pie)
  • Requires internet connection for API URL input mode

๐Ÿ”ฎ Future Enhancements

  • More chart types: flowcharts, treemaps, dashboards
  • Real-time data streaming and live updates
  • Collaborative visualization editing
  • CSV / XML support in addition to JSON
  • Pagination and data limiting for large datasets

๐Ÿ‘จโ€๐Ÿ’ป Author

Krupal Fataniya
B.E. Computer Engineering โ€” Enrollment No. 231263107010
Sal Engineering and Technical Institute, Ahmedabad
Gujarat Technological University | Academic Year 2025โ€“26

GitHub LinkedIn Portfolio Email


ยฉ 2026 LumiVizStack ยท Built with precision for developers.

โญ If you found this useful, please consider starring the repository!

About

A full-stack MERN web app that transforms JSON data into interactive charts and visualizations with JWT auth, history, and shareable links.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors

Languages