mirror of https://github.com/kern/filepizza
fix
parent
fab1c4bb58
commit
31bf09cd5d
@ -0,0 +1,118 @@
|
|||||||
|
# FilePizza Development Guide
|
||||||
|
|
||||||
|
A peer-to-peer file transfer application built with modern web technologies.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- [Node.js](https://nodejs.org/) (v18+)
|
||||||
|
- [pnpm](https://pnpm.io/) (preferred package manager)
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/kern/filepizza.git
|
||||||
|
cd filepizza
|
||||||
|
pnpm install
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## Available Commands
|
||||||
|
|
||||||
|
### Development
|
||||||
|
- `pnpm dev` - Start development server
|
||||||
|
- `pnpm dev:full` - Start with Redis and COTURN for full WebRTC testing
|
||||||
|
|
||||||
|
### Building & Testing
|
||||||
|
- `pnpm build` - Build for production
|
||||||
|
- `pnpm test` - Run unit tests with Vitest
|
||||||
|
- `pnpm test:watch` - Run tests in watch mode
|
||||||
|
- `pnpm test:e2e` - Run E2E tests with Playwright
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
- `pnpm lint:check` - Check ESLint rules
|
||||||
|
- `pnpm lint:fix` - Fix ESLint issues
|
||||||
|
- `pnpm format` - Format code with Prettier
|
||||||
|
- `pnpm format:check` - Check code formatting
|
||||||
|
- `pnpm type:check` - TypeScript type checking
|
||||||
|
|
||||||
|
### Docker
|
||||||
|
- `pnpm docker:build` - Build Docker image
|
||||||
|
- `pnpm docker:up` - Start containers
|
||||||
|
- `pnpm docker:down` - Stop containers
|
||||||
|
|
||||||
|
### CI Pipeline
|
||||||
|
- `pnpm ci` - Run full CI pipeline (lint, format, type-check, test, build, e2e, docker)
|
||||||
|
|
||||||
|
## Tech Stack
|
||||||
|
|
||||||
|
- **Framework**: Next.js 15 with App Router
|
||||||
|
- **UI**: React 19 + Tailwind CSS v4
|
||||||
|
- **Language**: TypeScript
|
||||||
|
- **Testing**: Vitest (unit) + Playwright (E2E)
|
||||||
|
- **WebRTC**: PeerJS
|
||||||
|
- **State Management**: TanStack Query
|
||||||
|
- **Themes**: next-themes with View Transitions
|
||||||
|
- **Storage**: Redis (optional)
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
src/
|
||||||
|
├── app/ # Next.js App Router pages
|
||||||
|
├── components/ # React components
|
||||||
|
├── hooks/ # Custom React hooks
|
||||||
|
├── utils/ # Utility functions
|
||||||
|
└── types.ts # TypeScript definitions
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Tips
|
||||||
|
|
||||||
|
### Using pnpm
|
||||||
|
|
||||||
|
This project uses pnpm as the package manager. Benefits include:
|
||||||
|
- Faster installs and smaller disk usage
|
||||||
|
- Strict dependency resolution
|
||||||
|
- Built-in workspace support
|
||||||
|
|
||||||
|
Always use `pnpm` instead of `npm` or `yarn`:
|
||||||
|
```bash
|
||||||
|
pnpm install package-name
|
||||||
|
pnpm remove package-name
|
||||||
|
pnpm update
|
||||||
|
```
|
||||||
|
|
||||||
|
### Code Style
|
||||||
|
|
||||||
|
- ESLint + TypeScript ESLint for linting
|
||||||
|
- Prettier for formatting
|
||||||
|
- Husky + lint-staged for pre-commit hooks
|
||||||
|
- Prefer TypeScript over JavaScript
|
||||||
|
- Use kebab-case for files, PascalCase for components
|
||||||
|
|
||||||
|
### Testing Strategy
|
||||||
|
|
||||||
|
- Unit tests for components and utilities (`tests/unit/`)
|
||||||
|
- E2E tests for critical user flows (`tests/e2e/`)
|
||||||
|
- Test files follow `*.test.ts[x]` naming convention
|
||||||
|
|
||||||
|
### WebRTC Development
|
||||||
|
|
||||||
|
For full WebRTC testing with TURN/STUN:
|
||||||
|
```bash
|
||||||
|
pnpm dev:full
|
||||||
|
```
|
||||||
|
|
||||||
|
This starts Redis and COTURN containers for testing peer connections behind NAT.
|
||||||
|
|
||||||
|
## Key Dependencies
|
||||||
|
|
||||||
|
- `next` - React framework
|
||||||
|
- `tailwindcss` - CSS framework
|
||||||
|
- `@tanstack/react-query` - Server state management
|
||||||
|
- `peerjs` - WebRTC abstraction
|
||||||
|
- `next-themes` - Theme switching
|
||||||
|
- `zod` - Schema validation
|
||||||
|
- `vitest` - Testing framework
|
||||||
|
- `playwright` - E2E testing
|
||||||
|
|
||||||
|
Run `pnpm ci` before submitting PRs to ensure all checks pass.
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"status": "failed",
|
|
||||||
"failedTests": [
|
|
||||||
"79024892fc2de608051f-528b0ecfc96903d743c3"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue