尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
JigSwap - Personal Puzzle Library & Exchange Platform
A comprehensive platform for jigsaw puzzle enthusiasts to manage their personal collections, track completion history, and engage in various types of puzzle exchanges. Built with Next.js 15, Convex, Clerk, and Tailwind CSS.
JigSwap is a family side project born from our own need to easily see and exchange puzzles with friends and family. What started as a simple solution for our puzzle-loving family has grown into a platform for the broader puzzle community.檢視完整 README ↗A comprehensive platform for jigsaw puzzle enthusiasts to manage their personal collections, track completion history, and engage in various types of puzzle exchanges. Built with Next.js 15, Convex, Clerk, and Tailwind CSS.
JigSwap is a family side project born from our own need to easily see and exchange puzzles with friends and family. What started as a simple solution for our puzzle-loving family has grown into a platform for the broader puzzle community.
JigSwap began as a family side project in 2025. We were tired of constantly asking friends and family "What puzzles do you have?" and wanted an easy way to see and exchange puzzles within our circle. What started as a simple solution for our puzzle-loving family has grown into a platform that serves the broader puzzle community.
Our mission is to make puzzle sharing sustainable, accessible, and enjoyable for everyone - whether you're trading with family members or connecting with fellow enthusiasts worldwide.
Before you begin, ensure you have the following installed:
Clone the repository
git clone https://github.com/SanderVerkuil/jigswap.git
cd jigswap
Install dependencies This project is a pnpm workspace monorepo (tasks run via Turborepo):
pnpm install
The repo uses TypeScript 7 only. In VS Code, install the
TypeScript 7 extension
(TypeScriptTeam.native-preview), because TS 7 doesn't ship the tsserver.js the
built-in TypeScript support needs. See CONTRIBUTING.md.
Set up environment variables Copy the example environment file and fill in your values:
cp apps/web/.env.example apps/web/.env.local
Fill in the required environment variables in apps/web/.env.local:
Set up Convex
cd packages/backend
pnpm convex:dev
This will:
Start the development server In a separate terminal, from the root directory:
pnpm dev
Open your browser Navigate to http://localhost:3000
Create a .env.local file in the apps/web directory with the following variables:
# Convex Backend
CONVEX_DEPLOYMENT=dev:your-deployment-name
NEXT_PUBLIC_CONVEX_URL=https://your-convex-deployment.convex.cloud
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
NEXT_PUBLIC_CLERK_FRONTEND_API_URL=https://your-clerk-frontend.clerk.accounts.dev
# Crowdin Localization (Optional)
CROWDIN_PROJECT_ID=your_crowdin_project_id
CROWDIN_API_TOKEN=your_crowdin_api_token
NEXT_PUBLIC_CROWDIN_DISTRIBUTION_HASH=your_crowdin_distribution_hash
apps/web/.env.localcd packages/backendpnpm convex:dev to set up your Convex projectapps/web/.env.locallocales/source.json)jigswap/
├── apps/
│ └── web/ # Next.js 15 frontend application
│ ├── src/
│ │ ├── app/ # Next.js App Router pages
│ │ │ ├── (auth)/ # Authentication pages
│ │ │ └── (dashboard)/ # Protected dashboard pages
│ │ ├── components/ # React components
│ │ │ └── ui/ # Reusable UI components
│ │ └── lib/ # Utility functions and providers
│ ├── locales/ # Internationalization files
│ │ └── source.json # Source translations
│ ├── public/ # Static assets
│ ├── .env.local # Environment variables
│ ├── next.config.ts # Next.js configuration
│ └── package.json # Web app dependencies
├── packages/
│ └── backend/ # Convex backend functions and schema
│ ├── convex/ # Convex functions and schema
│ │ ├── schema.ts # Database schema
│ │ ├── users.ts # User functions
│ │ ├── puzzles.ts # Puzzle functions
│ │ ├── collections.ts # Collection management
│ │ ├── completions.ts # Completion tracking
│ │ ├── exchanges.ts # Exchange system
│ │ └── reviews.ts # Review system
│ └── package.json # Backend dependencies
├── spec/ # Platform specifications
│ ├── README.md # Main specification document
│ ├── database-schema.md # Database schema specification
│ ├── user-interface.md # UI/UX specification
│ ├── api-specification.md # API specification
│ └── feature-roadmap.md # Development roadmap
├── package.json # Root workspace configuration
├── turbo.json # Turborepo task pipeline
└── pnpm-workspace.yaml # pnpm workspace configuration
pnpm dev - Start development server for web app with Turbopackpnpm dev:web - Start web app development serverpnpm build - Build all projectspnpm build:web - Build web app for productionpnpm start - Start production server for web apppnpm start:web - Start web app production serverpnpm lint - Run oxlint on all projectspnpm lint:fix - Fix oxlint errors on all projectspnpm type-check - Run TypeScript type checking on all projectspnpm test - Run tests on all projectspnpm clean - Clean build artifacts and the Turborepo cachepnpm format - Format code with Prettierpnpm graph - Write the task graph to graph.htmlpnpm dev - Start Next.js development server with Turbopackpnpm build - Build for productionpnpm start - Start production serverpnpm lint - Run oxlintpnpm lint:fix - Fix oxlint errorspnpm type-check - Run TypeScript type checkingpnpm build:analyze - Build with bundle analyzerpnpm build:production - Build with production environmentpnpm preview - Build and start production serverpnpm clean - Clean build artifactspnpm crowdin:upload - Upload source translationspnpm crowdin:download - Download translationspnpm convex:dev - Start Convex development serverpnpm convex:deploy - Deploy Convex functions to productionJigSwap supports multiple languages using next-intl and Crowdin:
The application uses Convex with the following main entities:
The application can be deployed to any platform that supports Next.js:
git checkout -b feature/amazing-featuregit commit -m 'feat: add amazing feature'git push origin feature/amazing-featurePlease follow the Conventional Commits specification for commit messages.
This project is licensed under the MIT License - see the LICENSE file for details.
If you have any questions or need help, please:
Made with ❤️ by a puzzle-loving family for the jigsaw puzzle community