463 lines
15 KiB
Markdown
463 lines
15 KiB
Markdown
# CLAUDE.md - AI Assistant Context
|
|
|
|
## Project Overview
|
|
|
|
SiliconPin is a comprehensive web platform built with Next.js 15 that offers multiple services and tools for modern web development and hosting needs. The application provides:
|
|
|
|
- **Topic Management System**: Rich content creation and management with user ownership
|
|
- **Admin Dashboard**: Comprehensive analytics, user management, and service administration
|
|
- **Web Services**: Cloud hosting, VPN, Kubernetes deployment, and developer hiring
|
|
- **PWA Capabilities**: Full Progressive Web App with offline functionality
|
|
- **Speech Tools**: Text-to-speech and voice recognition utilities
|
|
- **Payment System**: Balance management and billing integration
|
|
- **Authentication**: JWT-based auth with Redis sessions and OAuth integration
|
|
|
|
## Technology Stack
|
|
|
|
### Core Framework
|
|
|
|
- **Next.js 15** - React framework with App Router
|
|
- **TypeScript** - Type safety and better developer experience
|
|
- **React 19** - Latest React with concurrent features
|
|
|
|
### UI & Styling
|
|
|
|
- **Tailwind CSS 4** - Utility-first CSS framework
|
|
- **Custom UI Components** - Reusable React components with Tailwind styling
|
|
- **next-themes** - Dark/light theme support
|
|
- **Lucide React** - Beautiful, customizable icons
|
|
- **BlockNote Editor** - Rich text editor with @blocknote/mantine (v0.25.2)
|
|
|
|
### Authentication & Sessions
|
|
|
|
- **JWT** - JSON Web Tokens for authentication
|
|
- **bcryptjs** - Password hashing
|
|
- **Redis** - Session storage (high performance)
|
|
- **express-session** - Session management
|
|
- **connect-redis** - Redis session store
|
|
|
|
### Database & Validation
|
|
|
|
- **MongoDB** - Document database with Mongoose ODM
|
|
- **Mongoose** - MongoDB object modeling
|
|
- **Zod** - Schema validation and type inference
|
|
- **Topic System** - User-owned content with rich text editing and BlockNote editor
|
|
|
|
### State Management
|
|
|
|
- **TanStack Query v5** - Server state management
|
|
- **React Context** - Client state management
|
|
- **React Hook Form** - Form handling and validation
|
|
|
|
### Development Tools
|
|
|
|
- **ESLint** - Code linting with Next.js config
|
|
- **Prettier** - Code formatting with Tailwind plugin
|
|
- **Husky** - Git hooks for code quality
|
|
- **lint-staged** - Run linters on staged files
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
siliconpin/
|
|
├── app/ # Next.js App Router
|
|
│ ├── api/ # Comprehensive API routes (auth, admin, topics, services, payments)
|
|
│ ├── admin/ # Admin dashboard with analytics and management
|
|
│ ├── auth/ # Authentication pages
|
|
│ ├── topics/ # Topic management system (main content)
|
|
│ ├── tools/ # Speech tools and utilities
|
|
│ ├── services/ # Web services (hosting, VPN, K8s)
|
|
│ ├── dashboard/ # User dashboard
|
|
│ ├── globals.css # Global styles and Tailwind
|
|
│ ├── layout.tsx # Root layout with providers
|
|
│ └── page.tsx # Home page
|
|
├── components/ # React components
|
|
│ ├── admin/ # Admin-specific components
|
|
│ ├── auth/ # Authentication forms and UI
|
|
│ ├── topics/ # Topic/content components
|
|
│ ├── tools/ # Tool-specific components
|
|
│ ├── BlockNoteEditor/ # Rich text editor component
|
|
│ ├── ui/ # Reusable UI library
|
|
│ ├── header.tsx # Header with navigation
|
|
│ ├── footer.tsx # Footer component
|
|
│ └── theme-*.tsx # Theme components
|
|
├── contexts/ # React contexts
|
|
│ ├── AuthContext.tsx # Authentication state
|
|
│ └── QueryProvider.tsx # TanStack Query provider
|
|
├── lib/ # Utility libraries
|
|
│ ├── auth-middleware.ts # API authentication middleware
|
|
│ ├── jwt.ts # JWT utilities
|
|
│ ├── mongodb.ts # Database connection
|
|
│ ├── redis.ts # Redis connection
|
|
│ ├── session.ts # Session configuration
|
|
│ └── utils.ts # General utilities
|
|
├── models/ # Database models
|
|
│ ├── user.ts # User model with auth methods
|
|
│ ├── topic.ts # Topic model with user ownership
|
|
│ ├── billing.ts # Billing and payment models
|
|
│ └── transaction.ts # Transaction tracking
|
|
└── hooks/ # Custom React hooks
|
|
```
|
|
|
|
## Key Features
|
|
|
|
### Authentication System
|
|
|
|
- JWT-based authentication with refresh tokens
|
|
- Secure HTTP-only cookies
|
|
- Redis session storage for high performance
|
|
- Protected routes and API middleware
|
|
- User registration, login, logout, token refresh
|
|
- User ownership model for content (blogs, etc.)
|
|
|
|
### API Routes
|
|
|
|
- `POST /api/auth/register` - Create new user account
|
|
- `POST /api/auth/login` - Sign in user
|
|
- `POST /api/auth/logout` - Sign out user
|
|
- `POST /api/auth/refresh` - Refresh access token
|
|
- `GET /api/auth/me` - Get current user info (protected)
|
|
|
|
### Security Features
|
|
|
|
- Secure HTTP-only cookies
|
|
- Password hashing with bcrypt
|
|
- CSRF protection headers
|
|
- Input validation with Zod
|
|
- Protected API middleware
|
|
- Session management with Redis
|
|
|
|
### Core Application Features
|
|
|
|
- **Topic Management** - User-owned content creation with rich text editing
|
|
- **Admin Dashboard** - Comprehensive analytics, user management, and service administration
|
|
- **Web Services** - Cloud hosting, VPN services, Kubernetes deployment, developer hiring
|
|
- **Payment System** - Balance management, billing integration, and transaction tracking
|
|
- **Speech Tools** - Text-to-speech and voice recognition utilities
|
|
- **PWA Support** - Full Progressive Web App with offline capabilities and installability
|
|
|
|
## Development Commands
|
|
|
|
```bash
|
|
# Development
|
|
yarn dev # Start development server with hot reload
|
|
yarn build # Build for production
|
|
yarn start # Start production server
|
|
|
|
# Code quality
|
|
yarn lint # Run ESLint with auto-fix
|
|
yarn typecheck # Run TypeScript compiler (no output)
|
|
yarn prepare # Set up Husky pre-commit hooks
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
Required environment variables (create `.env.local`):
|
|
|
|
```env
|
|
# Database
|
|
MONGODB_URI=mongodb://localhost:27017/siliconpin
|
|
|
|
# Redis Session Store
|
|
REDIS_URL=redis://localhost:6379
|
|
|
|
# Authentication Secrets
|
|
SESSION_SECRET=your-session-secret-must-be-at-least-32-characters-long
|
|
JWT_SECRET=your-jwt-secret-change-in-production
|
|
JWT_REFRESH_SECRET=your-jwt-refresh-secret-change-in-production
|
|
|
|
# MinIO Storage (for topic images and file uploads)
|
|
MINIO_ENDPOINT=your-minio-endpoint
|
|
MINIO_PORT=9000
|
|
MINIO_ACCESS_KEY=your-access-key
|
|
MINIO_SECRET_KEY=your-secret-key
|
|
MINIO_BUCKET=your-bucket-name
|
|
|
|
# Optional
|
|
NODE_ENV=development
|
|
PORT=3006
|
|
```
|
|
|
|
## Common Development Tasks
|
|
|
|
### Adding New API Routes
|
|
|
|
1. Create new route file in `app/api/`
|
|
2. Use the auth middleware for protected routes:
|
|
|
|
```typescript
|
|
import { authMiddleware } from '@/lib/auth-middleware'
|
|
|
|
export async function GET(request: Request) {
|
|
const user = await authMiddleware(request)
|
|
if (!user) {
|
|
return Response.json({ error: 'Unauthorized' }, { status: 401 })
|
|
}
|
|
// Your protected logic here
|
|
}
|
|
```
|
|
|
|
### Creating New Components
|
|
|
|
1. Add component in `components/` directory
|
|
2. Use custom UI components from components/ui/ when possible
|
|
3. Follow existing patterns for styling and props
|
|
4. Create index.ts barrel export for cleaner imports
|
|
5. Use dynamic imports for heavy components (e.g., BlockNote)
|
|
|
|
### Adding New Database Models
|
|
|
|
1. Create model in `models/` directory
|
|
2. Define Mongoose schema with proper types
|
|
3. Add Zod validation schema
|
|
4. Export both model and validation schema
|
|
|
|
### Form Handling Pattern
|
|
|
|
```typescript
|
|
import { useForm } from 'react-hook-form'
|
|
import { zodResolver } from '@hookform/resolvers/zod'
|
|
import { z } from 'zod'
|
|
|
|
const schema = z.object({
|
|
// Define your schema
|
|
})
|
|
|
|
export function MyForm() {
|
|
const form = useForm({
|
|
resolver: zodResolver(schema),
|
|
defaultValues: {
|
|
// Set defaults
|
|
},
|
|
})
|
|
|
|
// Handle form submission
|
|
}
|
|
```
|
|
|
|
## AI Assistant Instructions
|
|
|
|
When working on this codebase:
|
|
|
|
### DO:
|
|
|
|
- Use TypeScript for all new code
|
|
- Follow existing component patterns
|
|
- Use custom UI components from components/ui/ when building UI
|
|
- Implement proper error handling
|
|
- Add Zod validation for API inputs
|
|
- Follow the established folder structure
|
|
- Use the existing authentication patterns
|
|
- Implement responsive design with Tailwind
|
|
- Add proper loading and error states
|
|
|
|
### DON'T:
|
|
|
|
- Mix different authentication patterns
|
|
- Skip TypeScript types
|
|
- Create components without proper props interface
|
|
- Forget to handle loading/error states
|
|
- Skip validation on API routes
|
|
- Use different state management patterns
|
|
- Add dependencies without checking existing ones
|
|
|
|
### Code Style
|
|
|
|
- Use functional components with hooks
|
|
- Prefer composition over inheritance
|
|
- Use descriptive variable and function names
|
|
- Add JSDoc comments for complex functions
|
|
- Follow Prettier formatting rules
|
|
- Use consistent import ordering
|
|
|
|
### Key Pages
|
|
|
|
- `/auth` - Authentication and user management
|
|
- `/dashboard` - User analytics and account overview
|
|
- `/topics` - Public topic listing and content browsing
|
|
- `/topics/new` - Create new topic (protected)
|
|
- `/topics/[slug]` - View individual topic content
|
|
- `/admin` - Admin dashboard with comprehensive management
|
|
- `/services` - Web services (hosting, VPN, Kubernetes)
|
|
- `/tools` - Speech tools and utilities
|
|
|
|
## 🔥 **CRITICAL: PWA Build vs Development Guidelines**
|
|
|
|
### **When You Need `yarn build` (Production Build Required):**
|
|
|
|
- ✅ **Service Worker Changes** - New caching strategies, SW updates
|
|
- ✅ **Workbox Configuration** - Changes to `next.config.js` PWA settings
|
|
- ✅ **Production PWA Testing** - Final validation before deployment
|
|
- ✅ **Performance Optimization** - Testing minified/optimized PWA bundle
|
|
|
|
### **When `yarn dev` is Sufficient (No Build Needed):**
|
|
|
|
- ✅ **Manifest Changes** - Icons, name, description, screenshots, theme colors
|
|
- ✅ **PWA Validation** - Chrome DevTools Application tab checks
|
|
- ✅ **Install Button Testing** - Browser install prompts
|
|
- ✅ **Icon Updates** - New icon files or sizes
|
|
- ✅ **Most PWA Features** - Installability, offline detection, etc.
|
|
|
|
### **Quick PWA Development Workflow:**
|
|
|
|
```bash
|
|
# 1. Start development (most PWA features work)
|
|
yarn dev
|
|
|
|
# 2. Make manifest/icon changes
|
|
# 3. Refresh browser - changes appear immediately
|
|
# 4. Validate in Chrome DevTools → Application → Manifest
|
|
|
|
# 5. Only build when deploying or testing service worker
|
|
yarn build && yarn start
|
|
```
|
|
|
|
**🚨 KEY INSIGHT**: PWA manifest changes hot-reload in development mode, making `yarn build` unnecessary for most PWA validation and testing!
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
1. **BlockNote Editor SideMenu Error**
|
|
- **Solution**: Ensure using `@blocknote/mantine` v0.25.2 (not newer versions)
|
|
- Import from `@blocknote/mantine` not `@blocknote/react` for BlockNoteView
|
|
- Create index.ts barrel export in BlockNoteEditor folder
|
|
- Clear cache: `rm -rf .next node_modules/.cache`
|
|
- Clean install: `rm -rf node_modules yarn.lock && yarn install`
|
|
|
|
2. **MongoDB Connection Issues**
|
|
- Ensure MongoDB is running locally or connection string is correct
|
|
- Check network connectivity for cloud databases
|
|
|
|
3. **Redis Connection Issues**
|
|
- Verify Redis server is running locally
|
|
- Check REDIS_URL format: `redis://localhost:6379`
|
|
|
|
4. **Authentication Not Working**
|
|
- Check JWT secrets are set in environment variables
|
|
- Verify cookies are being set correctly
|
|
- Check browser developer tools for errors
|
|
|
|
5. **Build Errors**
|
|
- Run `yarn typecheck` to identify TypeScript errors
|
|
- Check for unused imports or variables
|
|
- Verify all environment variables are set
|
|
|
|
6. **Development Server Issues**
|
|
- Clear Next.js cache: `rm -rf .next`
|
|
- Reinstall dependencies: `rm -rf node_modules && yarn install`
|
|
|
|
## Deployment Notes
|
|
|
|
- This application is optimized for Vercel deployment
|
|
- Environment variables must be set in production
|
|
- Ensure MongoDB and Redis instances are accessible from production
|
|
- Use secure secrets for JWT and session keys
|
|
- Enable HTTPS in production for secure cookies
|
|
|
|
## Contributing
|
|
|
|
When extending this application:
|
|
|
|
1. Maintain the established patterns
|
|
2. Add proper TypeScript types
|
|
3. Include validation schemas
|
|
4. Update documentation as needed
|
|
5. Test authentication flows
|
|
6. Follow security best practices
|
|
|
|
---
|
|
|
|
## Application Status
|
|
|
|
### ✅ **PRODUCTION READY - COMPREHENSIVE PLATFORM**
|
|
|
|
SiliconPin has evolved into a complete web platform with the following implemented features:
|
|
|
|
#### **🔐 Authentication & User Management**
|
|
|
|
- JWT-based authentication with refresh tokens
|
|
- OAuth integration (Google, GitHub)
|
|
- Redis session management
|
|
- Protected routes and API middleware
|
|
- User profile management
|
|
|
|
#### **📝 Topic Management System**
|
|
|
|
- Rich text editing with BlockNote editor
|
|
- User-owned content creation and management
|
|
- Tag system with search and filtering
|
|
- Image upload with MinIO integration
|
|
- Draft/publish workflows
|
|
- SEO optimization with metadata
|
|
|
|
#### **🛠️ Admin Dashboard**
|
|
|
|
- Comprehensive analytics and reporting
|
|
- User management and moderation
|
|
- Billing and transaction tracking
|
|
- Service administration
|
|
- System settings and configuration
|
|
- PDF report generation
|
|
|
|
#### **🌐 Web Services**
|
|
|
|
- Cloud hosting deployment and management
|
|
- VPN service configuration
|
|
- Kubernetes orchestration
|
|
- Developer hiring marketplace
|
|
- Service monitoring and health checks
|
|
|
|
#### **🎤 Speech Tools**
|
|
|
|
- Text-to-speech synthesis with multiple voices
|
|
- Voice recognition and transcription
|
|
- Web Speech API integration
|
|
- Audio processing utilities
|
|
|
|
#### **💰 Payment & Billing System**
|
|
|
|
- Balance management and top-up
|
|
- Transaction history and tracking
|
|
- Service billing and invoicing
|
|
- Payment gateway integration
|
|
- Refund processing
|
|
|
|
#### **📱 PWA Implementation**
|
|
|
|
- Full Progressive Web App capabilities
|
|
- Offline functionality with service worker
|
|
- App installation and native feel
|
|
- Responsive design across devices
|
|
- Push notification support
|
|
|
|
### **🚀 Technical Architecture**
|
|
|
|
#### **Backend Infrastructure**
|
|
|
|
- **50+ API Endpoints**: Comprehensive REST API coverage
|
|
- **8 Database Models**: User, Topic, Billing, Transaction, etc.
|
|
- **MongoDB Integration**: Full CRUD operations with Mongoose
|
|
- **Redis Caching**: High-performance session and data caching
|
|
- **MinIO Storage**: File and image management
|
|
|
|
#### **Frontend Excellence**
|
|
|
|
- **150+ Component Library**: Reusable React components
|
|
- **TypeScript**: 100% type safety with strict mode
|
|
- **Tailwind CSS**: Modern, responsive design system
|
|
- **Next.js 15**: Latest framework with App Router
|
|
- **PWA Ready**: Installable with offline capabilities
|
|
|
|
#### **Development Quality**
|
|
|
|
- **Code Quality**: ESLint, Prettier, and Husky pre-commit hooks
|
|
- **Security**: Input validation, CSRF protection, secure cookies
|
|
- **Performance**: Optimized bundle, lazy loading, caching strategies
|
|
- **Scalability**: Microservice-ready architecture
|
|
- **Documentation**: Comprehensive developer documentation
|
|
|
|
**Status**: **PRODUCTION DEPLOYMENT READY** with full feature set and enterprise-grade architecture.
|