8000 GitHub - ekmigasari/wfcOS
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ekmigasari/wfcOS

Repository files navigation

Work from Coffee OS

Work from Coffee OS

Next.js React Node.js Version TypeScript Tailwind CSS Shadcn Bun Ask DeepWiki

A web-based desktop environment to centralize your digital workflow and enhance productivity.

Overview β€’ Features β€’ Tech Stack β€’ Getting Started β€’ Development β€’ Contributing β€’ Documentation β€’ License

πŸ“‹ Overview

WFCOS (Work From Cafe OS) provides a single, organized interface that helps users reduce clutter, streamline tasks, and access essential tools and applications efficiently from any browser.

Built with a cutting-edge stack including Next.js 15, React 19, and Tailwind CSS v4, WFCOS offers a customizable and performant workspace. Leveraging Radix UI and shadcn/ui, it provides a familiar, desktop-like environment tailored to your needs.

Ideal for remote workers, developers, and anyone seeking a consistent and personalized command center for their online activities.

πŸ“š Documentation: For detailed information on how this app works, visit our DeepWiki documentation.

✨ Features

Version 2.3.1 - Latest Release

πŸ’Ό Blog

  • Added blogs section and blog pages

⏱️ Timer

  • Track work sessions and productivity
  • Link tasks to work sessions

πŸ“Š Session Log

  • View sessions as charts and tables
  • Charts show weekly, monthly, yearly data
  • Tables display all session data

βœ… To-do List

  • Session count in task items

πŸ› οΈ Tech Stack

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository:

    git clone <your-repository-url>
    cd wfcOS
  2. Set up environment variables:

    cp env.template .env.local
  3. Install dependencies with Bun:

    bun install

Development Commands

# Start development server
bun dev

# Build for production
bun build

# Start production server
bun start

# Lint code
bun lint

Docker Deployment

# Build and run with Docker
docker build -t wfcos .
docker run -p 3000:3000 wfcos

# Or use docker-compose
docker-compose up -d

πŸ“ Project Structure

Click to expand folder structure
.
β”œβ”€β”€ src/                    # Source code
β”‚   β”œβ”€β”€ app/                # Next.js App Router
β”‚   β”‚   β”œβ”€β”€ [page]/         # Route-specific directories
β”‚   β”‚   β”‚   β”œβ”€β”€ page.tsx    # Page component
β”‚   β”‚   β”‚   β”œβ”€β”€ layout.tsx  # Page-specific layout
β”‚   β”‚   β”‚   └── components/ # Page-specific components
β”‚   β”‚
β”‚   β”œβ”€β”€ presentation/       # UI Layer
β”‚   β”‚   β”œβ”€β”€ components/     # React components
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/         # Shadcn components
β”‚   β”‚   β”‚   β”œβ”€β”€ layout/     # Layout components
β”‚   β”‚   β”‚   └── apps/       # Application feature components
β”‚   β”‚   └── styles/         # Global styles
β”‚   β”‚
β”‚   β”œβ”€β”€ application/        # Application Layer
β”‚   β”‚   β”œβ”€β”€ atoms/          # Jotai atoms for state management
β”‚   β”‚   β”œβ”€β”€ hooks/          # Custom React hooks
β”‚   β”‚   └── types/          # TypeScript type definitions
β”‚   β”‚
β”‚   └── infrastructure/     # Infrastructure Layer
β”‚       β”œβ”€β”€ config/         # Configuration files
β”‚       β”œβ”€β”€ utils/          # Utilities
β”‚       └── lib/            # Shared libraries
β”‚
β”œβ”€β”€ public/                 # Static assets

🧩 Architecture

The project follows a clean architecture approach with three main layers:

Presentation Layer

Components, UI elements, and styles

/src/presentation/

Application Layer

Business logic, state management

/src/application/

Infrastructure Layer

Configuration, utilities, external services

/src/infrastructure/

Key Components

  • Component Structure:
    • Server Components (default) vs Client Components (with "use client" directive)
    • Component organization follows high cohesion, low coupling principles
  • State Management:
    • Uses Jotai for global state with atom-based architecture
    • Local state when appropriate
  • Window System:
    • All applications use the reusable window component at /src/presentation/components/layout/window.tsx
  • App Registry:
    • Applications are registered in /src/infrastructure/config/appRegistry.ts

πŸ“ Development Guidelines

Naming Conventions

Files & Directories

  • Directories: Kebab-case (user-profile/)
  • React components: PascalCase (UserProfile.tsx)
  • Utility files: camelCase (formatDate.ts)
  • Page files: page.tsx
  • Layout files: layout.tsx

Code Style

  • Components: PascalCase (UserProfile, UserProfileProps)
  • Variables/Functions: camelCase (getUserData())
  • Constants: UPPER_SNAKE_CASE (MAX_RETRY_COUNT)
  • Booleans: Use prefixes like is, has, should (isLoading, hasAccess)
Commit Message Format

This project uses Conventional Commits for standardized commit messages:

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

Common types:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code changes that neither fix bugs nor add features
  • test: Adding or modifying tests
  • chore: Changes to the build process or auxiliary tools

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Commit your changes using the conventional commit format
  5. Push to the branch (git push origin feature/amazing-feature)
  6. Open a Pull Request

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgements

  • Inspired by ryos
  • Next.js - The React Framework
  • Tailwind CSS - For utility-first CSS
  • Shadcn - For UI components
  • Radix UI - For accessible UI components
  • Bun - For fast JavaScript runtime and package management
  • Jotai - For state management
  • dnd-kit - For drag-and-drop functionality

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published
0