Prerequisites
Before you begin, ensure you have the following installed:Node.js
Version 22.0.0 or higher is required
pnpm
Version 9.15.4 (specified in package.json)
Meelio uses a Turborepo monorepo structure with pnpm workspaces. Make sure you have pnpm installed globally:
Installation
Install dependencies
Install all dependencies for the monorepo using pnpm:This will install dependencies for all apps and packages in the workspace.
Available Commands
All commands are run from the root directory:Loading the Extension Locally
For development, you can also use
pnpm dev which runs Plasmo in watch mode and automatically reloads the extension on changes.Development Workflow
Working on the Web App
The web app is located inapps/web/ and runs on port 4000:
- Hot Module Replacement (HMR)
- React Fast Refresh
- Automatic TypeScript type checking
Working on the Extension
The extension uses Plasmo framework and is located inapps/extension/:
Working on Shared Packages
The monorepo includes several shared packages inpackages/:
@repo/shared- Core business logic, stores, hooks, components@repo/ui- React component library (shadcn/ui based)@repo/logger- Logging utility- Configuration packages (ESLint, TypeScript, Tailwind, Prettier)
Turborepo Tasks
The monorepo uses Turborepo for task orchestration. Key tasks are defined inturbo.json:
build
build
Builds all apps and packages. Outputs include:
dist/**- Compiled outputbuild/**- Extension builds.next/**- Next.js builds (if applicable)
dependsOn: ["^build"]dev
dev
Runs development servers. This is a persistent task that doesn’t cache.
lint
lint
Lints all packages. Depends on packages being built first.
test
test
Runs test suites and generates coverage reports in
coverage/**Environment Variables
Meelio is designed to be fully offline-first, so most features work without external APIs. However, some optional features may require environment variables. Create.env files in the respective app directories:
Troubleshooting
Port 4000 already in use
The web app runs on port 4000 by default (configured inapps/web/package.json):
pnpm install fails
Ensure you’re using the correct pnpm version:Extension not loading
Make sure you built the extension first:TypeScript errors
The project uses TypeScript 5.3.3. If you encounter type errors:Next Steps
Architecture
Learn about Meelio’s architecture and design patterns
Contributing
Guidelines for contributing to Meelio