A modern, scalable blog and events platform built with cutting-edge web technologies. This monorepo architecture leverages Nuxt 3, Drizzle ORM, PostgreSQL, and MinIO for optimal performance and developer experience.
- Node.js 18+
- PNPM 8+
- Docker & Docker Compose
- Clone the repository
git clone <repo-url>
cd base1- Install dependencies
pnpm install- Set up environment variables
cp .env.example .env- Start development services
pnpm docker:dev- Run database migrations
pnpm db:generate
pnpm db:migrate- Start the development server
pnpm dev:webπ The application will be running at http://localhost:3000
- Nuxt 3 - Full-stack Vue.js framework with server-side rendering
- Vue 3 - Progressive JavaScript framework with Composition API
- TailwindCSS - Utility-first CSS framework for rapid UI development
- TypeScript - Static type checking for enhanced code quality
- PostgreSQL - Robust, open-source relational database
- Drizzle ORM - Type-safe ORM with excellent TypeScript support
- Drizzle Kit - Schema management and database migrations
- MinIO - High-performance, S3-compatible object storage
- Image Processing - Automated image upload and optimization
- Turborepo - High-performance monorepo build system
- PNPM - Fast, disk space efficient package manager
- Docker - Containerized development environment
base1/
βββ apps/
β βββ web/ # Main Nuxt 3 application
β β βββ components/ # Vue components
β β βββ pages/ # Application routes
β β βββ server/ # Server-side code
β β β βββ api/ # API endpoints
β β β βββ utils/ # Server utilities
β β βββ composables/ # Vue composables
β β βββ assets/ # Static assets
β βββ admin/ # Admin panel (planned)
βββ packages/
β βββ database/ # Database layer
β β βββ src/schema/ # Drizzle schemas
β β βββ src/migrations/ # Database migrations
β βββ ui/ # Shared UI components
β βββ config/ # Shared configurations
β βββ utils/ # Shared utilities
βββ docker/ # Docker configurations
βββ scripts/ # Build and deployment scripts
- Content Management: Title, content, excerpt, and SEO metadata
- Author Information: Author details and reading time estimates
- Publication: Publishing status and scheduled dates
- Media: Featured images and media attachments
- Event Details: Title, description, and categorization
- Location & Timing: Venue information and event scheduling
- Registration: Registration URLs and attendee management
- Capacity: Maximum attendees and current registration count
- Contact Information: Name, email, and company details
- Communication: Subject and message content
- Tracking: Submission timestamps and status
# Start all applications in development mode
pnpm dev
# Start only the web application
pnpm dev:web
# Start only the admin panel (planned)
pnpm dev:admin
# Build for production
pnpm build# Start PostgreSQL + MinIO CDN for development
pnpm docker:dev
# Stop development services
pnpm docker:dev:down
# Start only MinIO CDN
pnpm docker:minio
# Stop only MinIO CDN
pnpm docker:minio:down
# Access MinIO Console: http://localhost:9001
# Access CDN: http://localhost:9080# Start development environment with all services
docker-compose -f docker/docker-compose.dev.yml up -d
# Start production environment
docker-compose -f docker/docker-compose.prod.yml up -d
# Run linting
pnpm lint
# Run tests
pnpm test# Generate schema changes
pnpm db:generate
# Run database migrations
pnpm db:migrate
# Open Drizzle Studio (database visualization)
pnpm db:studio
# Opens at: https://local.drizzle.studio?port=4983# Start development services
pnpm docker:dev
# Stop all services
pnpm docker:down
# Restart services
docker-compose -f docker/docker-compose.dev.yml restart.env.example- Example environment variables
Note: For EasyPanel deployments, ensure
.env.prodexists as the deployment system expects this specific filename.
# Database
DATABASE_URL=postgresql://postgres:password@localhost:5432/base1
# MinIO (File Storage)
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin123
MINIO_USE_SSL=false
MINIO_PUBLIC_URL=http://localhost:9000
- Port: 5432
- Database: base1
- Username: postgres
- Password: password
- API Port: 9000
- Console Port: 9001
- Access Key: minioadmin
- Secret Key: minioadmin123
- Web Console: http://localhost:9001
# Build all packages
pnpm build
# Build specific application
pnpm build --filter=web