Prerequisites
Before you begin, ensure you have the following installed:- Node.js: Version 22.17.1 or higher
- pnpm: Version 9.15.1 (package manager)
- A compatible platform (Linux, macOS, or Windows with WSL)
Development Setup
Install dependencies
Install all project dependencies using pnpm:This will also run
postinstall hooks that generate necessary files and prepare the Nuxt environment.Configure the application
Set up your configuration files:
-
Create UI configuration:
-
Create backend configuration:
-
Set up environment variables:
- Edit these files according to the inline comments and your setup requirements.
Development Workflow
Running the Development Server
Start the development server with hot module replacement:http://localhost:3000.
Available Scripts
Here are the key npm scripts you’ll use during development:| Script | Command | Description |
|---|---|---|
| Development | pnpm dev | Start the development server at localhost:3000 |
| Build | pnpm build | Build the application for production |
| Build All | pnpm build:all | Run build generators and build the app |
| Type Check | pnpm typecheck | Run TypeScript type checking with Nuxt |
| Lint | pnpm lint | Run ESLint on all source files |
| Lint Fix | pnpm lint:fix | Automatically fix linting issues |
| Analyze | pnpm analyze | Analyze bundle size and composition |
| Generate | pnpm generate | Generate static site |
Code Quality
Linting
Guccho uses ESLint with the following configuration:- Base config:
@antfu/eslint-config - Vue plugin: Follows Vue 3 recommended rules
- TypeScript: Strict type checking with inline type imports
Type Checking
Always run type checking to catch TypeScript errors:Type checking is essential before submitting a pull request. The CI pipeline will fail if type errors are present.
Building for Production
To build the application for production:- Generates highlight.js configurations (
build:hljs) - Runs other build generators (
build:gen) - Builds the Nuxt application (
build)
Contributing Guidelines
Code Style
Guccho follows these coding conventions:- TypeScript: Always use TypeScript, never plain JavaScript
- Type imports: Use inline type imports (
import type { Type } from 'module') - Trailing commas: Required for multi-line arrays, objects, imports, and exports
- Curly braces: Use multi-line style for consistency
- Vue components: Single-word component names are allowed (non-standard)
Commit Messages
Write clear, descriptive commit messages:- Use present tense (“Add feature” not “Added feature”)
- Be concise but descriptive
- Reference issue numbers when applicable
Pull Request Process
- Create a feature branch from
main - Make your changes following the code style guidelines
- Run quality checks:
- Test your changes thoroughly
- Commit your changes with clear messages
- Push to your fork and create a pull request
- Address review feedback if requested
Testing Your Changes
Before submitting a pull request:- Development Testing
- Production Testing
- Code Quality
- Start the dev server:
pnpm dev - Test all affected functionality
- Check for console errors
- Test in different viewports (mobile, tablet, desktop)
Project Structure
The main development happens in these directories:Getting Help
If you need help:- Check the GitHub Issues for existing questions
- Open a new issue for bugs or feature requests
- Join the ppy.sb community for discussions