A full-stack web application to manage your tasks, notes, and ideas โ with an interactive knowledge graph to visualize connections between your thoughts.
Life OS is a personal productivity platform designed to help you organize your work, capture ideas, and discover connections between them. Whether you're tracking daily tasks, writing notes, or mapping how your ideas relate to each other, Life OS keeps everything in one place.
The app is built for developers and knowledge workers who want a system that's fast, clean, and actually useful โ without the bloat of traditional note-taking tools.
Why does it exist? Most productivity apps treat tasks and notes as isolated silos. Life OS connects them โ you can link any note to another, and the knowledge graph shows you the bigger picture of your thinking. It's a second brain you can actually navigate.
- ๐ User Authentication โ Secure registration and login with JWT tokens
- โ Task Management โ Create, edit, and delete tasks with inline editing and delete confirmation
- ๐ Notes System โ Write and manage notes with full-text search across title and content
- ๐ Note Linking โ Link notes to each other and explore backlinks
- ๐ธ๏ธ Knowledge Graph โ An interactive force-directed graph to visually explore how your notes connect
- ๐ฅ Multi-User Support โ Each user's data is fully isolated from others
- ๐ Search โ Filter notes instantly by title or content
- ๐ฑ Responsive Design โ Works on desktop and mobile
| Technology | Purpose |
|---|---|
| Java 17 | Programming language |
| Spring Boot 4.0.2 | Backend framework |
| Spring Security | Authentication & authorization |
| Spring Data JPA | Database access layer |
| PostgreSQL | Primary database |
| JWT (jjwt 0.11.5) | Secure token-based authentication |
| SpringDoc OpenAPI 2.3.0 | API documentation (Swagger UI) |
| Lombok | Boilerplate reduction |
| Maven | Build tool |
| Technology | Purpose |
|---|---|
| Angular 12 | Frontend framework |
| TypeScript | Programming language |
| Custom CSS | Styling (CSS variables, responsive) |
| force-graph | Interactive knowledge graph visualization |
Before you begin, make sure you have the following installed on your computer:
- Java 17+ โ Download and install JDK 17 or higher
- Node.js 16+ โ Includes npm (needed for Angular)
- PostgreSQL 14+ โ The database
- Git โ To clone the project
- A code editor like VS Code (recommended)
git clone https://github.com/justTanmay/secondbrain.git
cd secondbrain- Open your PostgreSQL client (e.g., pgAdmin or the terminal).
- Create a new database and user:
CREATE DATABASE secondbrain_db;
CREATE USER secondbrain_user WITH PASSWORD 'secondbrain';
GRANT ALL PRIVILEGES ON DATABASE secondbrain_db TO secondbrain_user;Spring Boot with
ddl-auto=updatewill automatically create all tables when the backend starts โ you don't need to create them manually!
- Navigate to the backend folder:
cd backend- Open the configuration file:
src/main/resources/application.properties
- The default values are already set to match the database you created above:
spring.datasource.url=jdbc:postgresql://localhost:5432/secondbrain_db
spring.datasource.username=secondbrain_user
spring.datasource.password=secondbrain
spring.jpa.hibernate.ddl-auto=update
jwt.secret=secondbrain-secret-key-which-is-very-secure
โ ๏ธ For production, never use these default values. Override them with environment variables and activate theprodprofile.
From inside the backend folder, run:
# On Mac/Linux
./mvnw spring-boot:run
# On Windows
mvnw.cmd spring-boot:runYou should see the server start on http://localhost:8080
Swagger UI (interactive API docs): http://localhost:8080/swagger-ui.html
The first run will take a few minutes as Maven downloads all dependencies.
Open a new terminal and navigate to the frontend folder:
cd frontend/secondbrain-frontendInstall dependencies (first time only):
npm installStart the development server:
npm startThe app will open at http://localhost:4200 ๐
-
Login โ Go to
http://localhost:4200and sign in. (Registration is handled directly via the API for now โ see the API section below.) -
Manage Tasks โ Click Tasks in the top nav to create, edit, and delete your tasks.
-
Write Notes โ Click Notes in the top nav to create notes. Use the search bar to find notes by title or content.
-
Link Notes โ On any note card, click Link to connect it to another note using its ID.
-
Explore the Graph โ Click Graph in the top nav to open the knowledge graph. Each node is a note; arrows show connections. Click a node to open that note.
secondbrain/
โ
โโโ backend/ # Spring Boot backend
โ โโโ Dockerfile # Multi-stage production Docker build
โ โโโ pom.xml # Maven dependencies
โ โโโ src/main/java/com/example/backend/
โ โโโ controller/ # REST API endpoints
โ โ โโโ AuthController.java
โ โ โโโ TaskController.java
โ โ โโโ NoteController.java
โ โ โโโ NoteLinkController.java
โ โโโ service/ # Business logic
โ โโโ repository/ # Database queries (JPA)
โ โโโ model/ # Database entity models
โ โโโ dto/ # Data transfer objects
โ โโโ security/ # JWT filter, util, and SecurityConfig
โ โโโ exception/ # Global error handling
โ โโโ config/ # OpenAPI / Swagger configuration
โ โโโ src/main/resources/
โ โโโ application.properties # Default (local) configuration
โ โโโ application-prod.properties # Production configuration
โ
โโโ frontend/secondbrain-frontend/ # Angular frontend
โโโ src/app/
โโโ core/ # Guards and HTTP interceptors
โ โโโ guards/ # AuthGuard (route protection)
โ โโโ interceptors/ # JwtInterceptor (auto-attach token)
โโโ features/ # Pages and feature modules
โ โโโ auth/ # Login component & AuthService
โ โโโ tasks/ # Task list component & TaskService
โ โโโ notes/ # Note list, note graph & NoteService
โโโ environments/ # API URL configuration (local / prod)
Screenshots coming soon!
| Page | Preview |
|---|---|
| Login | ![]() |
| Tasks | ![]() |
| Notes | ![]() |
| Notes | ![]() |
| Knowledge Graph | ![]() |
The backend exposes a REST API. All endpoints except auth require an Authorization: Bearer <token> header.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register a new user |
| POST | /api/auth/login |
Login and receive a JWT token |
| GET | /api/tasks |
Get all tasks for the current user |
| POST | /api/tasks |
Create a new task |
| PUT | /api/tasks/{id} |
Update a task |
| DELETE | /api/tasks/{id} |
Delete a task |
| GET | /api/notes |
Get all notes for the current user |
| POST | /api/notes |
Create a new note |
| PUT | /api/notes/{id} |
Update a note |
| DELETE | /api/notes/{id} |
Delete a note |
| GET | /api/notes/search?q={query} |
Full-text search across notes |
| POST | /api/note-links?sourceId=X&targetId=Y |
Link two notes |
| GET | /api/note-links/{noteId} |
Get notes linked from this note |
| GET | /api/note-links/backlinks/{noteId} |
Get notes that link to this note |
Full interactive docs available at: http://localhost:8080/swagger-ui.html
Here are some features planned for future versions:
- ๐ Registration page in the UI (currently API-only)
- ๐ Dark mode support
- ๐ท๏ธ Tags and categories for notes and tasks
- ๐ Task due dates and priority levels in the UI
- ๐ Recurring tasks support
- ๐ค Export notes as Markdown or PDF
- ๐ Notifications and reminders
- ๐ Analytics dashboard (task completion trends, note activity)
Contributions are welcome! Here's how to get started:
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/secondbrain.git
- Create a new branch for your feature:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m "Add: description of your change" - Push to your fork:
git push origin feature/your-feature-name
- Open a Pull Request on GitHub
- Follow the existing code style
- Write clear commit messages
- Test your changes before submitting
- Keep pull requests focused on one feature or fix
"Cannot connect to server" on login โ Make sure the backend is running on port 8080 and PostgreSQL is running.
"Access Denied" errors after a while โ Your JWT token has expired (24-hour expiry). Log out and log back in.
Build fails with Java version error
โ Make sure you have Java 17 or higher installed. Run java -version to check.
npm install fails
โ Try deleting the node_modules folder and running npm install again.
Knowledge graph is empty โ You need to create at least two notes and link them together before the graph will show connections.
This project is licensed under the MIT License โ see the LICENSE file for details.
You are free to use, modify, and distribute this project for personal or commercial use.
Tanmay Thakare
- GitHub: @justTanmay
- LinkedIn: linkedin.com/in/tanmaythakare
- Email: tanmayrthakare@gmail.com
Made with โค๏ธ and โ | If you find this project useful, please โญ star the repository!




