Apps & Packages

Overview of Portfolio OS applications and shared packages

Apps & Packages

Portfolio OS is organized as a monorepo with multiple applications and shared packages.

Applications

Architecture Overview

Application Matrix

AppPurposePortStack
SitePublic portfolio & blog3000Next.js, React, Tailwind
DashboardAdmin CMS3001Next.js, Prisma, TipTap
DocsDocumentation3002Next.js, MDX

Package Overview

Core Packages

PackagePurposeSize
@mindware-blog/uiShared React components~50 components
@mindware-blog/libBusiness logic & services~20 modules
@mindware-blog/utilsUtility functions~15 functions
@mindware-blog/dbPrisma client & schemaDatabase layer
@mindware-blog/hashnodeHashnode API clientGraphQL integration

Supporting Packages

PackagePurpose
@mindware-blog/emailsEmail templates (Resend)
@mindware-blog/tsconfigShared TypeScript configs
@mindware-blog/eslint-config-customESLint configuration

Getting Started

Running All Apps

# From repository root
pnpm dev

# All apps start in parallel
# Site: http://localhost:3000
# Dashboard: http://localhost:3001
# Docs: http://localhost:3002 (if configured)

Running Specific App

# Site only
pnpm dev --filter=@mindware-blog/site

# Dashboard only
pnpm dev --filter=@mindware-blog/dashboard

Development Workflow

Making Changes to Apps

# Navigate to app
cd apps/site

# Make changes
# Hot reload will update automatically

# Run tests
pnpm test

# Build
pnpm build

Making Changes to Packages

# Navigate to package
cd packages/ui

# Make changes to component
# All apps using this component will update

# Test package
pnpm test

# Typecheck
pnpm typecheck

Inter-Package Dependencies

Apps depend on packages, packages depend on each other:

// apps/site/package.json
{
  "dependencies": {
    "@mindware-blog/ui": "workspace:*",
    "@mindware-blog/lib": "workspace:*",
    "@mindware-blog/utils": "workspace:*",
    "@mindware-blog/hashnode": "workspace:*"
  }
}
// packages/ui/package.json
{
  "dependencies": {
    "@mindware-blog/utils": "workspace:*"
  }
}

Building for Production

# Build all apps and packages
pnpm build

# Build specific app
pnpm build --filter=@mindware-blog/site

# Build output
apps/site/.next/        # Next.js build
apps/dashboard/.next/   # Next.js build

Environment Variables

Each app has its own environment configuration:

apps/
├── site/
│   ├── .env.local          # Site environment
│   └── .env.example        # Template
├── dashboard/
│   ├── .env.local          # Dashboard environment
│   └── .env.example        # Template
└── docs/
    ├── .env.local          # Docs environment
    └── .env.example        # Template

See Environment Configuration for details.

Next Steps

Explore specific apps and packages:

Note:

For detailed package information, see Package System in the Developer Guide.