SynapStore is a robust, enterprise-grade platform designed to streamline the complex interactions between Store Owners and Suppliers. It facilitates seamless inventory management, supplier discovery, and operational workflows through a secure, high-performance web interface.
Built with modern web technologies, SynapStore prioritizes performance, security, and a premium user experience.
- Role-Based Access Control (RBAC): secure environments for Super Admins, Store Owners, and Suppliers with distinctive permissions and dashboards.
- Advanced Authentication:
- Secure Email/Password login with Bcrypt encryption.
- OTP-based Email Verification.
- Google OAuth integration.
- Supplier Network:
- Global Supplier Discovery system.
- Connection request auditing and management (Accept/Reject flows).
- Inventory Management:
- Efficient product tracking and management.
- Bulk inventory uploads supported by background processing.
- Real-Time Notifications:
- In-app notification system for critical updates.
- Email notifications for offline engagement.
- Analytics & Reporting:
- comprehensive admin dashboard for system-wide metrics.
- Store-specific status and performance overview.
- Framework: React 18 with Vite
- Language: TypeScript
- Styling: Tailwind CSS, Framer Motion (Animations)
- State Management: Recoil
- UI Components: Radix UI primitives, React Icons, Lucide React
- Routing: React Router DOM (v7)
- Runtime: Node.js
- Framework: Express.js
- Language: TypeScript
- Database: PostgreSQL
- ORM: Prisma (with adapter-pg)
- Queue System: BullMQ with Redis
- Validation: Zod
- Security: Helmet, CORS, Bcrypt, JWT
- Email: Nodemailer
Ensure you have the following installed on your local machine:
- Node.js (v18 or higher)
- npm or yarn
- PostgreSQL
- Redis (for background jobs)
-
Clone the repository
git clone https://github.com/sreecharan-desu/SynapStore.git cd SynapStore -
Setup Backend
cd backend npm install -
Setup Client
cd ../client npm install
Both the Client and Backend require environment variables to function correctly. We have provided example files for your convenience.
-
Backend:
- Copy
.env.exampleto.envin thebackend/directory. - Fill in your PostgreSQL connection string, Redis details, SMTP credentials, and JWT secrets.
- Copy
-
Client:
- Copy
.env.exampleto.envin theclient/directory. - Update
VITE_API_URLif your backend is running on a port other than3000.
- Copy
-
Start the Backend Server
cd backend # Starts the API server and the Worker process npm run dev
The backend will start at
http://localhost:3000. -
Start the Client Development Server
cd client npm run devThe client will be available at
http://localhost:5173.
-
Build Backend
cd backend npm run build npm start -
Build Client
cd client npm run build npm run preview
SynapStore/
├── backend/ # Node.js API Server
│ ├── lib/ # Shared libraries (Auth, Crypto, Mailer)
│ ├── middleware/ # Express middlewares
│ ├── prisma/ # Database schema & migrations
│ ├── routes/ # API Route definitions
│ └── worker/ # Background job processors
├── client/ # React Frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── hooks/ # Custom React hooks
│ │ ├── pages/ # Application pages
│ │ └── state/ # Global state (Recoil)
└── README.mdContributions are welcome! Please follow these steps:
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is maintained regularly to ensure documentation clarity and code quality. Small, daily improvements are prioritized over large, infrequent updates.