Skip to content

EgiStr/portofolio

Repository files navigation

Eggi Satria Personal Ecosystem

Turborepo TypeScript Next.js Tailwind CSS Prisma License: MIT

A robust, multi-domain personal ecosystem built with modern web technologies. This monorepo manages the portfolio, extensive blog, and a dedicated content management dashboard.

🌟 Features

  • 🚀 Performance First: Built on Next.js 14 App Router for optimal performance.
  • 🎨 Modern Design: Beautiful, accessible UI components powered by Tailwind CSS and Radix UI.
  • 📝 MDX Blog: Rich content experience with custom MDX components and syntax highlighting.
  • 🛠️ Content Manager: Custom dashboard to manage blog posts, projects, and site configuration.
  • 🔐 Secure Authentication: Integrated NextAuth.js for secure admin access.
  • 📦 Monorepo: Efficiently managed with Turborepo for shared configuration and UI.

🏗️ Architecture

The project follows a monorepo structure to share code and configuration across multiple applications.

Application Path Domain Description
Landing apps/landing eggisatria.dev Personal portfolio and landing page.
Blog apps/blog blog.eggisatria.dev Technical blog and knowledge base.
Manager apps/manager manager.eggisatria.dev Admin dashboard for content management.

Shared Packages

  • @ecosystem/ui: Reusable UI components (shadcn/ui), icons, and styles.
  • @ecosystem/database: Prisma schema and client for database interactions.
  • @ecosystem/typescript-config: Shared TypeScript configurations.
  • @ecosystem/tailwind-config: Shared Tailwind CSS preset.

🚀 Quick Start

Prerequisites

Ensure you have the following installed:

  • Node.js: LTS version (18+)
  • PNPM: Version 9+ (npm install -g pnpm)
  • Docker: (Optional) For running a local PostgreSQL instance.

Installation

  1. Clone the repository:

    git clone https://github.com/EgiStr/portofolio.git
    cd portofolio
  2. Install dependencies:

    pnpm install
  3. Configure Environment Variables:

    Copy the example environment file:

    cp .env.example .env

    Update .env with your database connection string and authentication secrets.

    DATABASE_URL="postgresql://user:password@localhost:5432/portofolio"
    NEXTAUTH_SECRET="your-super-secret-key"
  4. Database Setup:

    # Generate Prisma Client
    pnpm db:generate
    
    # Push schema to the database
    pnpm db:push
  5. Start Development Server:

    pnpm dev

Development URLs

📁 Project Structure

portofolio/
├── .github/              # GitHub templates and workflows
├── .husky/               # Git hooks
├── apps/                 # Application source code
│   ├── landing/
│   ├── blog/
│   └── manager/
├── packages/             # Shared libraries
│   ├── database/
│   ├── ui/
│   ├── tailwind-config/
│   └── typescript-config/
├── turbo.json            # Turborepo pipeline config
└── package.json          # Root dependencies and scripts

🛠️ Tech Stack

📜 Available Scripts

Command Description
pnpm dev Starts all apps in development mode via Turbo.
pnpm build Builds all apps and packages for production.
pnpm lint Runs ESLint across the entire workspace.
pnpm db:generate Generates the Prisma client types.
pnpm db:push Pushes the Prisma schema state to the database.
pnpm db:studio Opens Prisma Studio to view database content.
pnpm prepare Sets up Husky git hooks.

🤝 Contributing

This project uses Conventional Commits and strict linting rules. Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.

📝 License

MIT © Eggi Satria

About

portofolio Eggi Satria

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published