Your data. Your node. Your control.
A privacy-first storage platform — no cloud, no server, no data leaks. Currently building the first user-driven version with insights from 20+ real users and a growing open-source community.
- 🧠 What We’re Solving
- 🧩 Current Progress
- ⚙️ Tech Stack
- 💡 How You Can Contribute
- 📊 Community Validation
- 🔍 FAQ
- 📬 Connect
- 🌈 License
Most storage platforms depend on cloud or centralized servers — causing data leaks, storage limits, complex setups (credit cards, tokens, API keys, etc.). Privanode eliminates that by enabling peer-based local storage, where users can store, visualize, and control their own data securely and independently.
- 🧑💻 Built first MVP (core feature live)
- 📊 20+ user survey responses in just 2 days
- 💬 Refining setup flow & UI based on real feedback
- 🧑🎓 Balancing college exams and product development
- 🌍 Built with help from open-source contributors
| Category | Technology |
|---|---|
| Frontend Framework | React 18 + Vite v6 |
| Routing | React Router v7 |
| Styling | Tailwind CSS v3 + Chakra UI |
| State Management | Zustand |
| Data Fetching | TanStack Query (React Query) |
| Authentication | Clerk |
| Charts & Visualization | Recharts |
| Icons | Lucide React |
| Testing | Vitest (Unit) + Cypress (E2E) |
- Node.js (version 18 or higher)
- npm (comes bundled with Node.js)
- A Clerk account (for authentication) — optional for local UI dev, required for auth flows
# Clone the repository
git clone https://github.com/salonijoshi1980/Veltrian.git
# Go into the project
cd Veltrian
# Install all dependencies
npm install
# If you prefer yarn optional not need to run this if u use npm:
yarn
# Install React Router
npm install react-router
# Environment variables : Create a local .env from the example and fill in Clerk keys and other secrets
cp .env.example .env
# Example .env (update values with your own keys):
VITE_CLERK_PUBLISHABLE_KEY=pk_test_XXXXXXXXXXXXXXXXXXXXXXXX
VITE_CLERK_AFTER_SIGN_IN_URL=/app
VITE_CLERK_AFTER_SIGN_UP_URL=/app
VITE_CLERK_SIGN_IN_URL=/login
VITE_CLERK_SIGN_UP_URL=/signup
# Other environment variables (examples)
VITE_API_BASE_URL=http://localhost:4000/api
NODE_ENV=development
Important: Do not commit real secrets — add .env to .gitignore (should already be present).
# Start the dev server:
npm run dev
# By default the app runs at:
http://localhost:4000 (if 4000 is busy Vite will choose another port — check your terminal)
# Build for production:
npm run build
# Run TypeScript type checks:
npm run typechecksrc/
├── app/ # App router & pages (editable)
│ ├── api/ # API routes (editable)
│ ├── app/ # Main application pages (app/page.jsx)
│ │ └── page.jsx
│ ├── components/ # Reusable UI components
│ │ ├── FileManager/ # File manager components
│ │ │ ├── FileList.jsx
│ │ │ ├── UploadArea.jsx
│ │ │ ├── PreviewModal.jsx
│ │ │ ├── PassphraseSetupModal.jsx
│ │ │ └── index.js
│ │ ├── Header.jsx
│ │ └── README.md
│ ├── hooks/ # Custom hooks
│ │ ├── useFileOperations.js
│ │ ├── useFormatting.js
│ │ └── README.md
│ ├── login/ # Login page & auth components
│ ├── __create/ # Auto-generated files (do not edit)
│ ├── layout.jsx
│ └── routes.ts
├── utils/ # Utility functions (editable)
├── assets/ # Images, videos (e.g., demo.mp4)
└── ... # Other auto-generated or config files
# ⚠️ Auto-generated: Do not edit
# - src/app/__create/
# - src/__create/
# - src/auth.d.ts
# - src/client.d.ts
# - src/global.d.ts
# - build/
# - node_modules/
If you're contributing to the frontend, you can safely edit the following files and folders:
src/app/ # Main application folder (except __create/)
src/utils/ # Utility functions and helpers
src/app/components/ # Reusable UI components
src/app/hooks/ # Custom React hooks
src/assets/ # Images, videos (e.g., demo.mp4)
src/app/layout.jsx # Root layout component
src/app/routes.ts # Route configuration
Important:
Do not modify backend logic or auto-generated files — especially those located in:
src/app/__create/
src/app/api/
Authentication setup files (auth.d.ts, Clerk configs, etc.)
These areas are directly connected to the integrated backend, which handles login and email functionality.
Any backend-related changes should be discussed with the maintainer before making edits.
If you love privacy, open source, and problem-solving, help shape Privanode into the next evolution of local-first computing:
- Fork this repository
- Check open issues → (UI, file structure, docs, templates)
- Comment on an issue you’d like to work on
- Create a PR with your improvement
Every contribution counts 💙
You can check current issues like:
- Creating PR Templates
- Enhancing UI and documentation and more
We welcome contributions from the community!
Please read our Contribution Guidelines for detailed instructions on how to create issues, submit pull requests, and maintain code quality.
If you find issues or want to add features, check existing issues or open new ones. Every contribution counts! 💙
💬 Within 48 hours of survey launch:
- 20+ users responded
- Top concerns: limited storage, complex setups, and credit-card-based systems
- Many showed interest in peer or node-based storage models
How is Privanode different from cloud storage platforms?
Privanode operates on a local-first, peer-driven architecture so your data never leaves your control unless you want it to. No cloud, no third-party APIs, no centralized leaks.
Do I need a credit card or external identity for setup?
No! Privanode avoids credit-card-based systems and external tokens entirely. Onboarding is simple and private.
How do I contribute?
Just pick an issue, fork the repo, and send a PR. See How You Can Contribute for steps!
What survey feedback influenced the project direction?
Our first 18+ users highlighted pain points in cloud systems, setup complexity, and data privacy, leading to peer/node-based storage as our core solution. See charts above!
Where can I find documentation?
Check the /docs/ folder, README badges, and open GitHub issues for everything from setup to API usage.
MIT License © 2025 Veltrian
