One-line tagline: Where craft meets community β a high-fidelity social space made for sketch artists, painters, and traditional creatives.
CraftBook/
βββ backend/ # Express.js API server
β βββ src/
β β βββ api/ # API layer (versioned)
β β β βββ v1/
β β β βββ index.js # API v1 routes aggregator
β β βββ modules/ # Feature modules (domain-focused)
β β β βββ user/
β β β β βββ user.controller.js # HTTP request handlers
β β β β βββ user.service.js # Business logic
β β β β βββ user.repository.js # Data access layer
β β β β βββ user.routes.js # Route definitions
β β β βββ post/
β β β β βββ post.controller.js
β β β β βββ post.service.js
β β β β βββ post.repository.js
β β β β βββ post.routes.js
β β β βββ upload/
β β β βββ upload.controller.js
β β β βββ upload.service.js
β β β βββ upload.routes.js
β β βββ config/ # Configuration files
β β β βββ index.js # Main config
β β β βββ database.js # Prisma client (Singleton)
β β β βββ supabase.js # Supabase client
β β β βββ multer.js # File upload config
β β βββ middlewares/ # Express middlewares
β β β βββ error.middleware.js # Error handling
β β β βββ logger.middleware.js # Request logging
β β βββ app.js # Express app configuration
β β βββ server.js # Server startup & graceful shutdown
β βββ prisma/ # Database schema & migrations
β β βββ schema.prisma
β β βββ migrations/
β βββ .env # Backend environment variables
β βββ package.json # Backend dependencies
β βββ README.md # Backend documentation
β
βββ frontend/ # React Native mobile app
βββ src/
β βββ api/ # API client layer
β β βββ httpClient.js # Fetch wrapper
β β βββ user.api.js # User API calls
β β βββ post.api.js # Post API calls
β β βββ upload.api.js # Upload API calls
β β βββ index.js # API exports
β βββ components/ # Reusable UI components
β β βββ common/ # Generic components (Login, Register, PostCard)
β β βββ layout/ # Layout components
β β βββ feedback/ # Modals, alerts, toasts
β β βββ index.js
β βββ config/ # Configuration files
β β βββ env.js # Environment variables
β β βββ index.js # Firebase & API config
β βββ constants/ # App-wide constants
β β βββ colors.js # Color palette
β β βββ apiEndpoints.js # API endpoint URLs
β β βββ routes.js # Navigation route names
β β βββ index.js
β βββ contexts/ # React Context API (future)
β βββ hooks/ # Custom React hooks (future)
β βββ navigation/ # React Navigation setup
β β βββ AppNavigator.js # Root Stack Navigator
β β βββ MainNavigator.js # Bottom Tab Navigator
β β βββ index.js
β βββ screens/ # All app screens (feature-based)
β β βββ Auth/ # LoginScreen
β β βββ Home/ # HomeScreen
β β βββ Profile/ # ProfileScreen, CompleteProfileScreen
β β βββ Upload/ # UploadScreen
β βββ services/ # Business logic services (future)
β βββ theme/ # Theme configuration (future)
β βββ utils/ # Utility functions (future)
β βββ App.js # Root app component
β βββ index.js # Entry point
βββ assets/ # Static assets
βββ .env # Frontend environment variables
βββ package.json # Frontend dependencies
βββ app.json # Expo configuration
βββ index.js # Root entry (imports src/App.js)
βββ README.md # Frontend documentation
- Node.js 18+ and npm
- Expo CLI (for mobile development)
- PostgreSQL (via Supabase)
- Firebase account (for authentication)
- Clone the repository
git clone https://github.com/AmanCrafts/CraftBook.git
cd CraftBook- Install backend dependencies
cd backend
npm install- Install frontend dependencies
cd ../frontend
npm install- Set up environment variables
Backend (backend/.env):
DATABASE_URL="postgresql://..."
SUPABASE_URL="https://your-project.supabase.co"
SUPABASE_ANON_KEY="your-anon-key"
SUPABASE_BUCKET_NAME="Images"
PORT=3000
NODE_ENV=developmentFrontend (frontend/.env):
# Backend URL (use your computer's local IP for mobile devices)
EXPO_PUBLIC_API_URL=http://YOUR_LOCAL_IP:3000Note: Replace
YOUR_LOCAL_IPwith your computer's IP address. Get it by running:ifconfig | grep "inet " | grep -v 127.0.0.1
- Run Prisma migrations (in backend directory)
cd backend
npx prisma migrate dev
npx prisma generate- Start the application
Backend (Terminal 1):
cd backend
npm run devFrontend (Terminal 2):
cd frontend
npx expo start --clearThen scan the QR code with Expo Go app on your mobile device.
Backend (run from /backend directory):
npm run dev- Run backend server with nodemonnpm start- Run backend servernpm test- Test database connectionnpm run prisma:migrate- Run database migrationsnpm run prisma:generate- Generate Prisma clientnpm run prisma:studio- Open Prisma Studio
Frontend (run from /frontend directory):
npm start- Run Expo development servernpm run android- Run on Android device/emulatornpm run ios- Run on iOS device/simulatornpm run web- Run on web browser
Title: Craftbook β A Dedicated Visual-First Platform for Artists
Prepared by: Amanjeet β 2024-B-31102004
Elevator pitch: A mobile-first social app that preserves artwork quality, encourages meaningful critique through visual annotations, and helps artists sell and collaborate β without the noise of mainstream social networks.
Many general-purpose social networks treat artworks as generic posts. This creates several problems:
- Image degradation: High-quality artworks are heavily compressed and lose important detail.
- Shallow engagement: "Likes" dominate while constructive critique is rare.
- Poor discovery: Niche mediums and traditional techniques are hard to find.
- Monetization friction: Artists struggle to list and manage commissions or sales.
Goal: Build a focused platform that preserves craft, encourages improvement, and enables monetization for artists.
A mobile and web platform that:
- Accepts lossless high-resolution uploads and supports time-lapse/process posts.
- Enables annotation-based critique so feedback can be visual and actionable.
- Provides in-app commerce for commissions, prints, and originals.
- Surfaces artists by medium and skill β improving discovery and collaborations.
Key benefit: Artists get a curated environment designed around their workflow, not general social metrics.
- Firebase Authentication β Secure email/password authentication with session persistence
- Complete Profile System β Enhanced modular profile with avatar, banner images, bio, and medium
- Image Upload to Supabase β Upload and manage profile pictures and banner images
- Modern Design System β Indigo/purple color palette with reusable Button and Input components
- Post Feed β View recent and popular artwork posts with filtering
- Profile Editing β Full-screen modal for updating profile information
- Responsive UI β Modern gradient headers, icons, and smooth transitions
- Explore & Discover β Search artwork by title, tags, or description with medium filter chips and a visual grid layout
- Process Stages & Time-lapse β Multi-step posts showing evolution from sketch to final with stage carousel and step indicators
- Lossless Upload & Zoomable Viewer β Upload high-res images with optional watermarking
- Annotation Critique Mode β Draw-on-image feedback (public or private) with versioned replies
- Commission & Storefront β Commission requests, direct sales, and order tracking
- Curated Challenges β Community-driven art events and challenges
- Collab Board & Matchmaking β Post project invites and find collaborators by skill and style
Primary users:
- Raj β The College Sketch Artist (age 20): Shares process to get critique and build a portfolio.
- Sana β Professional Painter & Seller (age 28): Wants to sell originals and get commission requests.
- Mr. Verma β Gallery Curator (age 42): Looks for emerging talent and commissions work.
Audience: Artists (traditional & digital), students, collectors, galleries, and art teachers.
- As an artist, I want to upload a multi-stage post so viewers can follow my process.
- As a peer, I want to annotate a painting to point out shading suggestions.
- As a collector, I want to request a commission and securely pay within the app.
- As a curator, I want to search by medium and skill level to discover new artists.
- Framework: React Native (Expo SDK 54)
- Navigation: React Navigation (Stack + Bottom Tabs)
- Authentication: Firebase Auth with AsyncStorage persistence
- State Management: React Context API (AuthContext)
- UI Components: Custom components (Button, Input) with modern design
- Icons: Ionicons from @expo/vector-icons
- Gradients: expo-linear-gradient
- Image Handling: expo-image-picker
- Runtime: Node.js with Express.js
- Database: PostgreSQL (Supabase)
- ORM: Prisma
- Image Storage: Supabase Storage
- Architecture: Modular repository pattern
- Modern indigo/purple design system
- Modular profile architecture (6 reusable components)
- Image upload with quality preservation
- Real-time authentication state management
- Realtime: Socket.IO or Firebase Realtime
- Media tools: Sharp for image processing
- Payments: Stripe / Razorpay
- Search: Algolia or ElasticSearch
- CI/CD: Docker, GitHub Actions
MVP Scope (must-haves):
- Signup / Login and artist profile
- Upload high-res artwork with multi-image posts
- Zoomable viewer and basic watermark
- Public comments + simple annotation feedback
- Explore by medium and basic search
- Commission request form (sandboxed payment)
MVP Success criteria:
- Able to upload and view high-res art without perceptible quality loss.
- Users can leave at least 10 annotations across 5 different artworks.
- Commission flow completes end-to-end in a sandbox.
| Week | Milestone |
|---|---|
| 1β2 | Research, UX wireframes, user flows, design system |
| 3β4 | Backend models, auth, media storage, DB schema |
| 5β6 | Mobile feed, upload flow, zoomable viewer |
| 7 | Annotation layer, real-time updates, messaging |
| 8 | Commission flow & payment sandbox integration |
| 9 | Testing (QA), performance tuning for media |
| 10 | Deployment, demo build, documentation |
- Onboarding β Choose art type & interests
- Home Feed β Infinite scroll of curated and followed artists
- Post View β Full-res viewer, comments, and Critique toggle
- Upload β Select images/video β add stages, tags, price
- Discover β Filter by medium, challenges, and trending
- Profile β Portfolio, store, reviews, collab board
- DAU/MAU of artists and collectors
- Avg time spent on a post (longer indicates deeper engagement)
- Number of annotation critiques per week
- Commission conversion rate (requests β paid orders)
- Retention at 7/30/90 days
- Risk: Large uploads degrade performance. Mitigation: Server-side image optimization + progressive loading.
- Risk: Abuse and copyright infringement. Mitigation: Watermarking, report flows, and moderation tools.
- Risk: Payment disputes. Mitigation: Escrow-style flow and dispute resolution guidelines.
- Create 6 wireframe screens (Onboarding, Home, Post View, Upload, Discover, Profile)
- Build backend models and media pipeline
- Implement annotation prototype
- Integrate sandbox payments for commissions
- Wireframes (Figma/PNG) β optional next step
- Mobile & backend source code (MVP)
- Demo video & deployment guide
- User Privacy: Implement robust privacy settings for artists to control who can view their work.
- Content Moderation: Develop guidelines and tools for community moderation to maintain a positive environment.
- Scalability: Plan for scaling the platform to accommodate a growing user base and increasing media uploads.