The card market remains large and active, with millions of transactions each month on TCGPlayer (US) and Cardmarket (Europe). This market is heavily supported by local shops who often rely on spreadsheets, manual processes. Many generic inventory systems don't adequately address unique card shop needs.
This software aims to make business owners life and operations easier. The project is currently in development.
The inventory view displays card collections with stock levels, conditions, and values. Features include real-time stock tracking, physical location tracking, condition and grading support, and value estimation.
The transactions view shows buying and selling activities with fees, profits, and transaction history. Includes buy/sell tracking, grading submissions, damage and loss tracking, returns and refunds, profit analysis, and transaction history.
The library view provides access to card databases for multiple card games. Users can import card data, track collections, and create custom libraries for specific product groups. Features include adding existing inventories from library, creating custom product groups, and complete card data and pricing.
Synq is open source. You can self-host the platform on your own servers, giving you complete control over your data and infrastructure.
-
Frontend:
- Next.js
- React
- TypeScript
- Tailwind CSS
- Shadcn UI components
-
Backend:
- Next.js API Routes
- Supabase for authentication and database
- Resend for email delivery
-
Development:
- Turborepo for monorepo management
- ESLint and Prettier for code quality
- TypeScript for type safety
synq-collectibles/
├── apps/ # Applications
│ ├── synq-app/ # Next.js web application (dashboard)
│ └── synq-landing/ # Next.js landing page
│ └── synq-desktop/ # Next.js desktop application
├── packages/ # Shared packages
│ ├── ui/ # Shared UI components
│ ├── supabase/ # Supabase client and services
│ ├── stripe-config/ # Stripe configuration
│ ├── eslint-config/ # Shared ESLint configuration
│ └── typescript-config/ # Shared TypeScript configuration
├── infra/ # Infrastructure
│ └── supabase/ # Supabase migrations and functions
└── .github/ # GitHub workflows and templates
- Node.js 20.9.0 or later
- Yarn 1.22.19 or later
- Docker Desktop installed and running
- Supabase CLI installed (see official documentation for installation methods)
-
Clone the repository:
git clone git@github.com:synqcloud/synq.git cd synq -
Install dependencies:
yarn install
-
Start Local Supabase:
cd infra && supabase start
This will start the local Supabase instance and output your API credentials.
-
Set up environment variables:
cp /.env.example .env.local
Edit
.env.localwith the values from the Supabase start output:NEXT_PUBLIC_SUPABASE_URL: http://localhost:54321NEXT_PUBLIC_SUPABASE_ANON_KEY: Your anon key from the Supabase start outputSTRIPE_SECRET_KEY: Your Stripe secret key (for subscription features)
-
Reset the database (if needed):
cd infra && supabase db reset
This will run migrations and seed the database with test data.
-
Start the development server:
yarn dev
The applications will be available at:
- Web Application (Dashboard): http://localhost:3000
- Desktop Application: http://localhost:8585
- Landing Page: http://localhost:3001
- Supabase Dashboard: http://localhost:54323
- Auth Emails: http://localhost:54324
Run from root:
yarn dev- Start development server with Turbopackyarn dev:app- Start the web platform development server with Turbopackyarn dev:desktop- Start the desktop application development server with Turbopackyarn dev:landing- Start the landing page development server with Turbopackyarn build- Build the applicationyarn lint- Run ESLintyarn format- Format code with Prettieryarn generate-types- Generate Supabase database types
If you encounter issues:
- Ensure Docker Desktop is running
- Check Supabase status:
cd infra && supabase status
- Restart Supabase if needed:
cd infra && supabase start
- Reset the database:
cd infra && supabase db reset
- Verify your environment variables in
.env.local
Feel free to open issues or submit pull requests if you have suggestions for improvements.
This project is licensed under the AGPL-3.0 for non-commercial use.
author: Telmo Beroiz Bilbao
