feat: Initialize monorepo with Python backend and React frontend
Related Issue(s):
Relates to #1 (closed) - Project initialization
What does this MR do?
This MR establishes the foundational monorepo structure for the Claude Code Marketplace Workshop project, consisting of:
Backend (Python 3.13+)
- Basic Python application skeleton with pyproject.toml configuration
- Entry point in
main.pywith hello world implementation - Python version pinned to 3.13 via
.python-versionfile - Ready for FastAPI/Flask integration or other framework additions
Frontend (React 19 + Vite 7 + TypeScript)
- Modern React 19.1 application with full TypeScript support
- Vite 7.1 for lightning-fast development and optimized production builds
- ESLint configured with React hooks, TypeScript, and React Refresh rules
- SWC compiler for fast refresh and compilation
- Demo counter application with Hot Module Replacement (HMR) enabled
Monorepo Configuration
- Root-level
.gitignorecovering Python artifacts, Node.js modules, build outputs, and editor/OS files - Separate workspace directories for frontend and backend
- Clean separation of concerns between frontend and backend codebases
Why was this MR needed?
This establishes the project structure required for developing the Claude Code Marketplace Workshop application. The monorepo approach allows for:
- Unified version control for full-stack development
- Easier coordination between frontend and backend changes
- Shared tooling and CI/CD pipeline configuration
- Simplified deployment and dependency management
Technical Details:
Backend Stack:
- Python: 3.13+
- Package manager: uv/pip (configured via pyproject.toml)
- Structure ready for adding web framework (FastAPI, Flask, etc.)
Frontend Stack:
- React: 19.1.1 (latest stable)
- TypeScript: 5.9.3
- Build tool: Vite 7.1.7 with @vitejs/plugin-react-swc
- Linting: ESLint 9.36 with TypeScript and React plugins
- Package manager: pnpm (lockfile included)
Development Features:
- Frontend HMR with SWC for instant updates
- TypeScript strict mode for type safety
- ESLint configured for React hooks and refresh patterns
- Separate TypeScript configs for app and node environments
How to Test:
Backend Verification:
cd /Users/admin/big-data/claude-code-marketplace-workshop/backend
python3 --version # Should be Python 3.13 or higher
python3 main.py # Should print "Hello from backend!"
Expected backend output:
Hello from backend!
Frontend Verification:
cd /Users/admin/big-data/claude-code-marketplace-workshop/frontend
pnpm install # Install dependencies
pnpm run dev # Start development server
Expected frontend behavior:
- Vite dev server starts on
http://localhost:5173(or next available port) - Browser opens showing React + Vite demo page
- Counter component with increment button is functional
- Hot Module Replacement works - edit
src/App.tsxand see instant updates
Linting verification:
cd /Users/admin/big-data/claude-code-marketplace-workshop/frontend
pnpm run lint # Should pass with no errors
Build verification:
cd /Users/admin/big-data/claude-code-marketplace-workshop/frontend
pnpm run build # Should create optimized production build in dist/
pnpm run preview # Preview production build
File Structure Overview:
claude-code-marketplace-workshop/
├── .gitignore # Monorepo-wide ignore patterns
├── README.md # Project documentation (GitLab default)
├── backend/
│ ├── .python-version # Python 3.13
│ ├── README.md
│ ├── main.py # Entry point
│ └── pyproject.toml # Python project config
└── frontend/
├── README.md # Vite + React documentation
├── eslint.config.js # ESLint 9 flat config
├── index.html # App entry HTML
├── package.json # Dependencies and scripts
├── pnpm-lock.yaml # Locked dependencies
├── public/ # Static assets
├── src/ # React source code
│ ├── App.tsx # Main App component
│ ├── main.tsx # React entry point
│ └── *.css # Stylesheets
├── tsconfig.*.json # TypeScript configurations
└── vite.config.ts # Vite configuration
Implementation Notes:
-
Python Version: Backend requires Python 3.13+ as specified in
pyproject.toml. This is enforced via.python-versionfor pyenv/asdf users. -
Package Manager: Frontend uses
pnpmfor faster installs and efficient disk usage. Ifpnpmis not installed, runnpm install -g pnpm. -
TypeScript Configuration: Uses separate configs for application code (
tsconfig.app.json) and build tooling (tsconfig.node.json) for optimal type checking. -
ESLint v9: Utilizes the new flat config format (
eslint.config.js) instead of legacy.eslintrc.*files. -
Ready for Extension: Both frontend and backend are minimal skeletons ready for:
- Backend: Adding FastAPI/Flask, database connections, API routes
- Frontend: Adding routing (React Router), state management (Redux/Zustand), UI libraries
Files Changed:
Added (17 files, ~2,300+ lines):
- 1 root
.gitignore - 4 backend files (Python app skeleton)
- 12 frontend files (React + Vite + TypeScript setup + demo code)
- ~1,869 lines from
pnpm-lock.yaml(dependency lockfile)
Next Steps (Not Included in This MR):
- Add web framework to backend (FastAPI/Flask)
- Implement API endpoints
- Add frontend routing and state management
- Configure CI/CD pipeline
- Add testing frameworks (pytest for backend, Vitest for frontend)
- Update project README with actual project description
Checklist:
-
Backend runs successfully with Python 3.13 -
Frontend builds without errors -
ESLint configuration is valid and passes -
TypeScript compilation succeeds -
HMR works in development mode -
.gitignorecovers all necessary patterns -
Monorepo structure is clean and organized