System Requirements
Before installing SnapCart, make sure your environment meets the following requirements.
Server requirements
| Component | Minimum | Recommended |
|---|---|---|
| Java | 17 | 21 LTS |
| MySQL | 8.0 | 8.0+ |
| Node.js | 18.x | 20.x LTS |
| RAM | 2 GB | 4 GB+ |
| Disk | 10 GB | 20 GB+ |
| OS | Linux / macOS / Windows | Ubuntu 22.04 LTS |
Software dependencies
Backend
- Java 17+
- Maven 3.9+
- MySQL 8.0+
Frontend
- Node.js 18+
- npm 9+
Optional (for Docker deployment)
- Docker 24+
- Docker Compose 2.x
Port requirements
| Service | Default Port |
|---|---|
| Spring Boot API | 8080 |
| Frontend Dev Server | 5173 |
| MySQL | 3306 |
Storage
SnapCart supports two storage backends:
| Mode | Description |
|---|---|
| Local | Files stored on the server filesystem under /storage/ |
| AWS S3 | Files stored in an S3-compatible bucket (recommended for production) |
Email
An SMTP server is required for:
- Email verification on signup
- Password reset OTPs
- Order confirmation emails
- Custom notification broadcasts
Supported providers: Gmail, SendGrid, Mailgun, AWS SES, or any SMTP-compatible service.
Configure SMTP credentials in Settings → Email after installation. See Notifications for setup instructions.
Development machine setup
For local development (running both backend and frontend on the same machine):
macOS / Linux
# Install Java 21 via SDKMAN
curl -s "https://get.sdkman.io" | bash
sdk install java 21.0.3-graal
# Install Node.js 20 via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20
nvm use 20
# Install Maven
brew install maven # macOS
sudo apt install maven # Ubuntu
# Install MySQL 8
brew install mysql # macOS
sudo apt install mysql-server # Ubuntu
Windows
- Download Java 21 JDK from adoptium.net and install.
- Download Node.js 20 LTS from nodejs.org and install.
- Download Maven from maven.apache.org and add to
PATH. - Download MySQL 8 from dev.mysql.com and install.
Verifying your environment
Run these commands to confirm all tools are installed correctly:
java -version # should show 17.x or higher
mvn -version # should show 3.9.x or higher
node -v # should show v18.x or v20.x
npm -v # should show 9.x or higher
mysql --version # should show 8.0.x or higher
If any command returns "not found", revisit the installation step for that tool before proceeding to the Installation Guide.
Network requirements
| Direction | Protocol | Description |
|---|---|---|
| Browser → Frontend (5173) | HTTP | Storefront and admin panel access |
| Browser → Backend (8080) | HTTP | Direct API access (development) |
| Backend → MySQL (3306) | TCP | Database connection |
| Backend → SMTP server | TCP 587/465 | Outbound email delivery |
| Backend → Payment gateways | HTTPS 443 | PayPal, Razorpay, PayTM callbacks |
In production, the browser communicates only with the reverse proxy (Nginx on port 80/443). All backend and database ports are internal.
Hardware requirements by deployment size
| Store size | Orders/month | RAM | CPU | Storage |
|---|---|---|---|---|
| Small (dev/starter) | < 500 | 2 GB | 2 vCPU | 20 GB |
| Medium | 500–5,000 | 4 GB | 2–4 vCPU | 40 GB |
| Large | 5,000–50,000 | 8 GB | 4–8 vCPU | 100 GB |
| Enterprise | 50,000+ | 16 GB+ | 8+ vCPU | S3 + CDN |
For large stores, consider separating the backend and database onto different servers and using S3 for file storage.