Local Development Guide
How to build and run Make-Print locally.
Important: Separate Terminals
Each active component (Server, Client, File Converter) must be run in its own separate terminal window or command prompt session. They are independent processes that need to run concurrently.
Choose Your Branch
Main Branch: Stable releases. Use this for a reliable experience.
Dev Branch: Latest features. Use this to contribute or test bleeding-edge changes.
Required API Keys & Environment Variables
The project requires several environment variables to function correctly. Create a .env file in the server/ directory with the following keys:
# Core Configuration
NODE_ENV=dev # Environment mode (dev/prod)
PORT=3010 # Server port
MONGODB_URI=... # MongoDB connection string
SESSION_SECRET=... # Session encryption secret
SERVER_URL=http://localhost:3010 # Backend URL
CLIENT_URL=http://localhost:5173 # Frontend URL
FC_URL=http://localhost:5000 # File Converter URL
# AI Features
OPENAI_API_KEY=... # OpenAI API Key
HUGGINGFACE_API_KEY=... # HuggingFace API Key
# AWS Resources
AWS_ID=... # S3 Bucket Access Key ID
AWS_KEY=... # S3 Bucket Secret Key
APP_AWS_ID=... # Application AWS Access Key ID
APP_AWS_KEY=... # Application AWS Secret Key
AWS_SES_ID=... # SES Access Key ID (Email)
AWS_SES_KEY=... # SES Secret Key (Email)
S3_ACCOUNT_ID=... # AWS Account ID for S3
# Payments
STRIPE_SECRET_KEY=... # Stripe Secret Key
STRIPE_ACCOUNT_ID=... # Stripe Connected Account ID
PAYPAL_CLIENT_ID=... # PayPal Client ID
PAYPAL_SECRET=... # PayPal Secret
# Auth (Optional)
GOOGLE_ID=... # Google OAuth Client ID
GOOGLE_SECRET=... # Google OAuth Client Secret
FACEBOOK_ID=... # Facebook App ID
FACEBOOK_SECRET=... # Facebook App Secret
GITHUB_ID=... # GitHub Client ID
GITHUB_SECRET=... # GitHub Client Secret
TWITTER_ID=... # Twitter API Key
TWITTER_SECRET=... # Twitter API Key Secret
# Redis
REDIS_HOST=localhost # Redis Hostname
REDIS_PORT=6379 # Redis Port
# Other
NOTIFICATION_EMAIL_PERIOD=1 # Email digest frequency (mins)
TZ=America/New_York # Timezone
Primitives
The Foundation. The primitives repository contains shared development primitives, data structures, algorithms, and utilities that are used across both the client and server. It serves as a submodule for other components.
Note: You typically don't need to run anything here unless you are making changes to shared logic. However, be aware that for the client-side, sensitive keys (like Stripe/AWS) defined here are often replaced with constants or public keys during the build process, as environment variables are not directly accessible in the browser.
# Clone repository (only if editing shared logic)
git clone https://github.com/make-print/primitives.git
cd primitives
Server
Port: 3010The Backend. Built with Node.js, TypeScript, and Express. The server orchestrates the entire application logic, handling secure API endpoints, managing MongoDB database interactions, and facilitating real-time collaboration via WebSockets (Socket.io). It also integrates with Redis for caching and session management, requiring Docker to run the local instance seamlessly.
# Clone repository
git clone https://github.com/make-print/server.git
cd server
# Install dependencies
npm install
# Install submodules
npm run installSubmodules
# Start server (development mode - auto starts Redis)
npm run dev
# OR Compile for production
npm run compile
File Converter
Port: 5000The 3D Engine. A specialized Python API service dedicated to processing 3D files. It handles the heavy lifting of converting various 3D file formats (STL, OBJ, STEP, etc.) into formats suitable for web viewing and analysis.
# Clone repository
git clone https://github.com/make-print/file-conversion.git
# Install requirements
pip install -r requirements.txt
# Run application
python main.py
Client
Port: 5173The Frontend. A modern, responsive single-page application (SPA) built with React, TypeScript, and Vite. It delivers a rich user experience featuring an interactive Kanban board for project management, a high-performance 3D viewer (Three.js/React Three Fiber) for inspecting models, and a real-time chat interface. It communicates with the server via REST APIs and WebSockets.
# Clone repository
git clone https://github.com/make-print/client.git
cd client
# Install dependencies
npm install
# Install submodules
npm run installSubmodules
# Start development server
npm run dev
# OR Build for production
npm run build
You're All Set!
Once all 3 terminals are running their respective components, you can open your browser and navigate to http://localhost:5173 to see the app in action. Happy coding!
Need a Custom Solution?
Love Make-Print but need specific features for your shop? We offer custom development services to tailor the platform exactly to your workflow.