MCPcopy Index your code
hub / github.com/Lifeforge-app/lifeforge

github.com/Lifeforge-app/lifeforge @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,307 symbols 4,726 edges 821 files 94 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

[!NOTE]

Don't worry, LifeForge is still alive and kicking. 🚀

Update · 31 May 2026

The UI library rewrite and the subsequent migration away from Tailwind CSS have been successfully completed.

The core client architecture now runs entirely on the new internal UI system. Remaining work primarily involves migrating existing modules and updating project documentation.

This milestone marks the completion of one of the largest architectural transitions in LifeForge's history.

Don't get too comfortable, though. This is definitely not the largest forever. If LifeForge has taught us anything, it's that every "final architecture" eventually becomes tomorrow's migration project. :)

[!IMPORTANT]

UI Architecture Migration Completed

Development was previously blocked by a critical styling issue in the module federation architecture.

What happened?

Both the host application and federated modules were bundling Tailwind CSS independently. This created CSS cascade layer conflicts across module boundaries, resulting in:

  • Unpredictable style overrides
  • Broken responsive utilities
  • Cross-module styling interference
  • Inconsistent rendering behavior between host and remote applications

When multiple Tailwind CSS bundles coexist within the same runtime, cascade layer ordering becomes difficult to control reliably.

Each federated module generates its own CSS output, but all styles ultimately converge into a single document cascade. As modules are loaded and composed dynamically, style precedence can become dependent on injection order rather than application intent, creating subtle and difficult-to-debug styling conflicts.

While Tailwind CSS excels in conventional application architectures, it was never designed with large-scale federated frontend systems as a primary use case.

The problem was never subtle.

Once multiple Tailwind bundles were introduced into the module federation architecture, styling conflicts became immediately visible and could affect entire sections of the UI. Because the conflict originated from the interaction between independently generated CSS outputs sharing the same cascade, no practical or reliable fix existed without changing the underlying styling model itself.

The migration away from Tailwind was therefore not a preference change, but an architectural necessity.

Resolution

PR #93 introduced a complete redesign of the internal UI library and styling architecture.

The new system is:

  • Token-driven
  • Component-based
  • Fully independent of Tailwind CSS
  • Designed specifically for module federation
  • Built around a single shared UI contract

Rather than allowing each module to generate and ship its own CSS, all applications now consume UI primitives, tokens, and styling behavior directly from @lifeforge/ui.

This establishes @lifeforge/ui as the single source of truth for visual presentation across the entire platform.

As a result:

  • Federated modules no longer bundle their own styling systems
  • Visual behavior remains consistent regardless of module load order
  • Styling ownership is centralized and predictable
  • Cross-module cascade conflicts are eliminated by design

The migration introduced breaking changes and required substantial refactoring across the codebase, but it permanently resolved a class of architectural problems that could not be reliably addressed within the previous model.

[!TIP]

Looking for the Legacy Version?

The final Tailwind-based implementation has been preserved and remains available for reference.

  • Legacy Release: https://github.com/Lifeforge-app/lifeforge/releases/tag/legacy-final
  • Legacy Branch: https://github.com/Lifeforge-app/lifeforge/tree/legacy-final

The legacy version is no longer actively developed, but it may still be useful for historical reference, migration guidance, or reviewing previous implementations.

LifeForge Logo

A self-hosted solution to streamline and organize all aspects of your life.

LifeForge Interface Mockup

skills skills skills skills skills skills skills

🇬🇧 English 🇨🇳 简体中文 🇹🇼 繁體中文 🇲🇾 Bahasa Malaysia

THIS PROJECT IS STILL IN EARLY DEVELOPMENT. FEATURES AND MODULES ARE SUBJECT TO CHANGE. PLEASE CHECK THE DOCUMENTATION FOR THE LATEST UPDATES.

📋 Table of Contents

🔥 Support the Author

Buy Me A Coffee

🤔 The Problem

People nowadays having tons of different apps to increase their productivity, but using too much apps distracts your focus.

Most software-as-a-service (SaaS) solutions are subscription-based, leading to recurring costs that can add up over time. Additionally, many of these services collect user data for advertising or analytics purposes, and even using those data for AI training, raising privacy concerns.

✅ The Solution

LifeForge is a personal management system designed to help you manage your life efficiently. Whether it's keeping track of tasks, organizing projects, setting personal goals, or managing financial statuses, LifeForge has got you covered.

With its modular architecture, you can customize LifeForge to fit your unique needs. Activate only the modules you require, keep yourself from a pile of unused features, and create a streamlined experience tailored just for you.

Built with privacy in mind, your data is stored locally on your own server or device (we do not host any servers too), which means you are in full control of your data. No telemetry, no data mining, just pure privacy.

🧱 Modules

LifeForge’s modular system is designed to empower users by providing a diverse range of tools and features tailored to their unique needs. Each module focuses on a specific aspect of life, such as productivity, finance, lifestyle, and learning, offering flexibility and customization. Whether you’re organizing your tasks, managing finances, or exploring creative pursuits, LifeForge’s modular design allows you to activate only the features you need, creating a personalized and streamlined experience.

Key highlights of the modules include:

  • Productivity Tools: Boost efficiency with modules like the Todo List, Projects, Idea Box, and the Pomodoro Timer. These tools help users manage tasks, brainstorm ideas, and stay focused on their goals.
  • Finance Management: Take control of finances using the Wallet, Wishlist, and Budget modules, offering tools for tracking expenses, saving for future goals, and planning budgets.
  • Lifestyle Enhancements: Reflect and grow with the Journal and Achievements modules, or stay active with features like Workout tracking.
  • Study Aids: Improve learning with the Flashcards, Notes, and CFOP Algorithms modules, ideal for students and lifelong learners.
  • Storage Solutions: Organize books, photos, music, and more with modules like Books Library, Photos, and Guitar Tabs.
  • Information Management: Stay informed and efficient with tools like the Mail Inbox and Changi Airport for specialized insights.
  • Customization: Tailor the platform to individual preferences using the Personalization module for a unique user experience.

The modular approach ensures flexibility and scalability, allowing users to toggle on or off the features they need. Whether you’re a professional, a student, or a hobbyist, the system's diverse modules are designed to fit seamlessly into your lifestyle.

For the full list of modules, please visit here.

(The new module system, Forgistry is currently under development and will be released soon!)

🖥 Screenshots

The screenshots provided are just a glimpse of LifeForge. There's a lot more to explore and discover within the project.

LifeForge Dashboard LifeForge Todo List Module LifeForge Calendar Code Time LifeForge Wallet Module LifeForge Book Library

⌨️ Setup

LifeForge now supports Docker for easy deployment! 🐳 You can get up and running with just a few commands. For those who prefer manual installation, that option is still available.

Visit the Documentation to see how to install and setup.

Contributing

We welcome contributions from the community! If you're interested in contributing to LifeForge, please check out our Contributing Guidelines.

Contributing to Core

As this project is still in its early stages, we highly encourage developers to make a discussion in the Discussions section before starting any significant work. This helps ensure that your contributions align with the project's goals and reduces the chances of duplicated efforts.

Creating Modules

LifeForge's modular architecture allows developers to create and integrate their own modules seamlessly. If you're interested in developing a module, please refer to our Module Development Guide for detailed instructions and best practices.

Feature Requests & Bug Reports

If you have ideas for new features or have encountered any bugs, please submit them through the Issues section on GitHub.

However, if the feature is seems to be specific to a particular module, please refer to the specific module's repository for feature requests and bug reports.

Translation

We are looking for volunteers to help translate LifeForge into different languages. If you're interested, please follow the instructions in our Translation Guide.

However, for individual modules, please refer to the specific module's documentation for translation instructions.

💡 Credits

LifeForge was inspired by the need for a unified personal management system that integrates various tools and resources to help streamline daily life, and also this project. For the full story, visit the Documentation.

Huge credits to the open-source community for their invaluable contributions, libraries, and tools that have made LifeForge possible.

⭐️ Star History

That's a crazy exponential growth. Huge thanks to all of you guys supporting this project!

<sourc

Extension points exported contracts — how you extend this code

IGetFullList (Interface)
(no doc) [3 implementers]
packages/server-utils/src/typescript/pb/PBService.interface.ts
ServiceConfig (Interface)
* Service command configurations
tools/src/commands/dev/config/commands.ts
TagsInputProps (Interface)
* Props for the TagsInput component.
packages/ui/src/components/inputs/TagsInput/index.tsx
ModuleConfig (Interface)
(no doc)
packages/configs/src/interfaces/module_config.types.ts
FederationContextValue (Interface)
(no doc)
packages/federation/src/providers/FederationProvider.tsx
ClientI18nConfigOptions (Interface)
(no doc)
packages/localization/src/config/client-i18n.config.ts
FileOptions (Interface)
(no doc)
packages/log/src/utils/config.ts
EncryptedPayload (Interface)
(no doc)
packages/api/src/utils/encryption.ts

Core symbols most depended-on inside this repo

error
called by 217
packages/log/src/loggers/logger.ts
debug
called by 117
packages/log/src/loggers/logger.ts
filter
called by 95
packages/server-utils/src/typescript/pb/PBService.interface.ts
toString
called by 79
packages/ui/src/system/colors/color-with-opacity.ts
colorWithOpacity
called by 77
packages/ui/src/system/colors/color-with-opacity.ts
normalizeResponsiveProp
called by 64
packages/ui/src/system/responsive/utils/normalizeResponsiveProps.ts
collection
called by 58
packages/server-utils/src/typescript/pb/PBService.interface.ts
open
called by 53
packages/ui/src/providers/ModalProvider.tsx

Shape

Function 927
Method 183
Interface 163
Class 34

Languages

TypeScript100%

Modules by API surface

packages/ui/src/components/utilities/Scrollbars/index.tsx57 symbols
packages/server-utils/src/typescript/pb/PBService.interface.ts55 symbols
packages/log/src/loggers/logger.ts23 symbols
packages/api/src/utils/encryption.ts22 symbols
docs/src/components/MdxComponents.tsx19 symbols
packages/api/src/core/forgeEndpoint.ts18 symbols
packages/ui/src/components/inputs/RRuleInput/utils/getRRuleString.ts13 symbols
apps/web/src/providers/features/UserPersonalizationProvider.tsx13 symbols
apps/api/src/core/functions/database/dbUtils.ts11 symbols
apps/api/src/core/functions/database/PBService/services/getList.ts11 symbols
tools/src/utils/packageJson.ts10 symbols
packages/log/src/loggers/cliLogger.ts10 symbols

For agents

$ claude mcp add lifeforge \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact