Skip to content

ScatmanVit/Link-Mind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers MIT License

Logo

LinkMind

Intelligent Personal Productivity System with AI-Powered Link Management

Explore the docs » .
Report Bug · Request Feature


Table of Contents

Table of Contents
  1. About The Project
  2. Getting Started
  3. Project Structure
  4. API Endpoints
  5. Usage
  6. Features
  7. Roadmap
  8. License
  9. Contact

About The Project

LinkMind is a comprehensive personal productivity system designed to help users organize their digital life through intelligent link management, event scheduling, and note-taking—all powered by artificial intelligence. Built as a full-stack multiplatform solution, it combines a mobile application (iOS & Android), a web admin dashboard, and a robust REST API.

This project was developed as a Technical Thesis (TCC) at Etec Lauro Gomes - Technical Course in Internet Computing (Informática para a Internet), São Bernardo do Campo, SP - Brazil.

The Story Behind LinkMind

LinkMind represents 7 months of intensive development—an average of 10 hours per day dedicated to transforming a vision into reality. What started as a response to a common frustration became a comprehensive solution to modern productivity challenges.

The Problem Identified: The developer observed that most organization apps were unnecessarily complex and difficult to learn. Users struggled with steep learning curves just to perform basic tasks. Additionally, in today's digital landscape, people receive media, tasks, and commitments from multiple applications simultaneously throughout the day—creating information overload and fragmented attention.

The Solution: LinkMind was conceived as a unified hub that centralizes different areas of organization—links, events, and annotations—solving both problems at once. Users can consolidate their digital life in one place while maintaining complete control over their experience.

Core Philosophy: LinkMind puts the user in control. Unlike many apps that push unnecessary content and notifications, LinkMind allows users to create their own scheduled notifications, ensuring they only receive what they explicitly need. No spam, no forced features—just a powerful tool that adapts to the user's needs.

What is LinkMind?

LinkMind provides a unified platform for managing:

  • Links: Save, organize, and categorize web links with AI-generated summaries
  • Events: Schedule events with automatic push notifications
  • Annotations: Create and manage personal notes
  • Categories: Organize all content with custom categories

System Architecture

graph TB
    Mobile["📱 Mobile\n(Expo/React Native)"]
    Web["🌐 Web\n(React/Vite)"]

    Mobile --> API
    Web --> API

    API["⚙️ REST API\n(Express)"]

    API --> PG["🗄️ Supabase\n(PostgreSQL + Prisma)"]
    API --> Redis["⚡ Redis\n(Session/Cache)"]
    API --> Supabase["☁️ Supabase Storage\n(Files)"]
    API --> Resend["📧 Resend\n(Email Service)"]

    subgraph AWS ["☁️ AWS — Idempotent Notification Flow"]
        SQS1["SQS QUEUE 1\n(5 retries + DLQ)"]
        Lambda1["LAMBDA receive-worker\n(schedule event)"]
        EB["EVENT BRIDGE Scheduler\n(triggers at event time)"]
        SQS2["SQS QUEUE 2\n(5 retries + DLQ)"]
        Lambda2["LAMBDA send-worker\n(send notification)"]

        SQS1 --> Lambda1
        Lambda1 --> EB
        EB --> SQS2
        SQS2 --> Lambda2
    end

    API --> SQS1
    Lambda2 --> Push["🔔 Expo Push\nNotifications"]

    subgraph AI ["🤖 AI Link Summarization Flow"]
        Jina["Jina AI\n(web scraping)"]
        Groq["Groq API\n(Llama 3.3 summarization)"]
        SaveSummary["☁️ Supabase Storage\n(save summary)"]

        Jina --> Groq
        Groq --> SaveSummary
    end

    API -->|"link URL"| Jina
    SaveSummary -->|"summary"| API
    API -->|"returns summary"| Mobile
Loading

(back to top)


Built With

Backend

Node.js Express Prisma PostgreSQL Redis Supabase AWS Docker

Mobile

React Native Expo TypeScript

Web

React Vite TypeScript

AI & Services

Groq JWT Resend

DevOps

Git Vercel

(back to top)


Mobile App Screenshots

Authentication

Register Login Password Recovery

| | | |

Notifications Permission

Links

Home/Listing Create View
Action Options Edit (No Modal) Edit (With Modal)
AI Summary (Loading) AI Summary (Result)

Annotations

Listing Create (Keyboard Open) Create (Keyboard Closed)

Note: Annotations feature automatic saving. When a user opens an annotation for editing and makes any changes, the content is automatically saved when they navigate using the native navigation bar or the app's back arrow. All interactions that create, edit, or delete content display toast notifications (success, error, or validation warnings).

Events

Listing Create - Step 1 Create - Step 2

| | | |

Create - Step 3 View Action Options

| | | |

Edit Create Notification

| | |

(back to top)


Testing & Debugging

During the development of LinkMind, a robust multiplatform system with multiple interconnected services, thorough testing and debugging were essential to ensure reliability and performance.

Tools Used

  • Insomnia - Primary API client for endpoint testing and request debugging
  • Postman - Alternative API testing and collection management
  • Browser DevTools - Network inspection, performance profiling, and frontend debugging

Why This Matters

Building a system that integrates mobile app, web dashboard, REST API, AWS Lambda functions, PostgreSQL, Redis, and external services like Supabase and Expo Push Notifications presents debugging challenges that go far beyond simple endpoint testing.

Network Debugging Complexity: The system involves multiple asynchronous communication channels:

  • Mobile app → REST API → PostgreSQL/Redis
  • REST API → AWS SQS → Lambda Functions → Expo Push Notifications
  • Web Dashboard → REST API → User Management

Identifying which service failed in a chain of async operations required tracing requests across the entire stack. A 500 error from the API could originate from database connection issues, Redis cache failures, malformed SQS messages, Lambda execution timeouts, or external service timeouts—not just from the endpoint logic itself.

Debugging Beyond Surface Errors: This project required investigating root causes at multiple levels:

  • Database query performance and connection pool exhaustion
  • Redis session persistence and cache invalidation issues
  • AWS Lambda cold starts and function configuration
  • SQS message formatting and queue visibility timeouts
  • Cross-origin request (CORS) configurations
  • Token refresh race conditions between mobile and web platforms

The developer had to build custom logging strategies, analyze CloudWatch metrics, and instrument code to trace the exact failure point in distributed systems—skills that transcend typical CRUD application debugging.

(back to top)


Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

  • Node.js: Version 18.0 or higher
  • pnpm: Version 8.0 or higher (recommended package manager)
  • PostgreSQL: Version 14 or higher
  • Redis: Version 6 or higher
  • Git: For version control

Installation

1. Clone the Repository

git clone https://github.com/ScatmanVit/Link-Mind.git
cd Link-Mind

2. Backend Setup

cd server
pnpm install

Configure your .env file (copy from existing .env or create with required variables):

# Database
DATABASE_URL="postgresql://user:password@localhost:5432/linkmind"

# JWT
JWT_SECRET="your-secret-key"

# Redis
REDIS_URL="redis://localhost:6379"

# Groq AI
GROQ_API_KEY="your-groq-api-key"

# Supabase
SUPABASE_URL="your-supabase-url"
SUPABASE_ANON_PUBLIC="your-supabase-anon-key"

# Resend (Email)
RESEND_API_KEY="your-resend-api-key"

# AWS
AWS_REGION="us-east-1"
RECEIVE_SQS_URL="your-sqs-queue-url"

# Frontend URL
FRONT_END_URL="http://localhost:5173"

Run database migrations:

npx prisma migrate dev

Start the development server:

pnpm dev

The API will be available at http://localhost:3000

3. Mobile App Setup

cd app/link-mind
pnpm install
pnpm start

Run on Android:

pnpm android

Run on iOS:

pnpm ios

4. Web App Setup

cd web
pnpm install
pnpm dev

The web app will be available at http://localhost:5173

(back to top)


Project Structure

link-mind/
├── .github/                  # GitHub assets and configs
│   └── logo.png
├── app/                      # Mobile application (Expo/React Native)
│   └── link-mind/
│       ├── app/            # Expo Router pages
│       │   ├── auth/       # Authentication screens
│       │   ├── tabs/       # Main app tabs (links, events, annotations)
│       │   └── pesquisa/   # Search functionality
│       ├── src/
│       │   ├── components/ # Reusable UI components
│       │   ├── context/   # React Context (auth)
│       │   ├── services/  # API services
│       │   ├── styles/    # Theme and colors
│       │   └── utils/     # Utility functions
│       └── assets/        # Images, fonts, etc.
├── server/                   # Backend API
│   ├── config/              # Configuration (app, redis, supabase)
│   ├── controllers/         # Route controllers
│   │   ├── auth/           # Authentication controllers
│   │   └── private/        # Private user/admin controllers
│   ├── routes/             # API routes
│   ├── services/           # Business logic
│   │   ├── auth/          # Auth services
│   │   ├── aws/           # AWS SQS services
│   │   └── private/       # User services
│   ├── middlewares/        # Express middlewares (auth, admin)
│   ├── prisma/            # Database schema
│   └── server.js          # Entry point
├── web/                     # Web application (Admin Dashboard)
│   ├── src/
│   │   ├── auth/          # Auth pages
│   │   ├── components/    # React components
│   │   ├── context/       # Auth context
│   │   ├── pages/         # Page components
│   │   ├── services/     # API services (admin)
│   │   └── styles/        # CSS/styles
│   └── main.tsx          # Entry point
├── aws/                     # AWS Lambda functions
│   └── events-notifications/
│       └── lambdas/
│           ├── receive-worker/   # Event scheduling (EventBridge)
│           └── send-worker/      # Push notifications
└── README.md

(back to top)


API Endpoints

All API endpoints are prefixed with /api/v1/linkmind

Authentication

Method Endpoint Description
POST /auth/cadastro Register new user
POST /auth/login User login
POST /auth/refresh-token Refresh access token
POST /auth/logout User logout
POST /auth/reset-password Reset password
POST /auth/reset-password-send Send password reset email

Links

Method Endpoint Description
GET /links/list Get all user links
POST /link/create Create new link
PUT /link/update/:id Update link
POST /link/delete/:id Delete link
POST /summary/link Generate AI summary for link

Events

Method Endpoint Description
GET /event/list Get all user events
POST /event/create Create new event
PUT /event/update/:id Update event
DELETE /event/delete/:id Delete event
POST /event/notification/:id Schedule notification

Annotations

Method Endpoint Description
GET /annotation/list Get all annotations
POST /annotation/create Create new annotation
PUT /annotation/update/:id Update annotation
DELETE /annotation/delete/:id Delete annotation

Categories

Method Endpoint Description
GET /categories/list Get all categories
POST /category/create Create new category

User

Method Endpoint Description
POST /user/device-token Register Expo push token

Admin

Method Endpoint Description
GET /admin/list-users List all users (paginated)
POST /admin/create-user Create new user
PUT /admin/update-user/:id Update user
DELETE /admin/delete-user/:id Delete user
POST /admin/send-email-comunicate Send email to user

(back to top)


Usage

Mobile Application

The LinkMind mobile app provides a native experience on iOS and Android:

  1. Authentication: Register and login with email/password
  2. Links Tab: Add new links, view AI-generated summaries
  3. Events Tab: Create events with date/time and notifications
  4. Annotations Tab: Write and manage personal notes
  5. Quick Add: Floating action button for quick content creation

Web Application (Admin Dashboard)

The web application serves as an admin panel:

  1. Login at http://localhost:5173
  2. Manage users (create, edit, delete)
  3. Send email communications to users
  4. Pagination support for user list

API Usage Examples

// Register
const response = await fetch('/api/v1/linkmind/auth/cadastro', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'John Doe',
    email: 'john@example.com',
    password: 'securepassword'
  })
});

// Login
const loginResponse = await fetch('/api/v1/linkmind/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: 'john@example.com',
    password: 'securepassword',
    platform: 'mobile'
  })
});

const { access_token } = await loginResponse.json();

// Create Link
const linkResponse = await fetch('/api/v1/linkmind/link/create', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${access_token}`
  },
  body: JSON.stringify({
    title: 'Example Link',
    link: 'https://example.com',
    categoriaId: 'category-uuid'
  })
});

// Generate AI Summary
const summaryResponse = await fetch('/api/v1/linkmind/summary/link', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${access_token}`
  },
  body: JSON.stringify({
    linkId: 'link-uuid',
    instructions: "Make it concise"
  })
});

(back to top)


Features

Completed Features

  • User Authentication: Register, login, logout, password reset with JWT
  • Secure Token Management: HTTP-only cookies for refresh tokens (web) + Redis cache for session handling
  • Link Management: Full CRUD with categories and tags
  • AI-Powered Summarization: Link content summarization using Groq Llama 3.3
  • Event Scheduling: Create events with date/time and notifications
  • Push Notifications: Real-time notifications via Expo Push Notifications with AWS SQS + DLQ for retry
  • AWS Integration: EventBridge scheduling, SQS queue processing, and Dead Letter Queue for failed messages
  • Annotation System: Personal notes with categories
  • Category System: Custom categories for all content types
  • Admin Dashboard: Web-based admin panel for user management
  • Email Notifications: Password reset and admin communications via Resend

In Development

  • Real-time sync across devices
  • Advanced search with filters
  • Offline mode for mobile app

(back to top)


Roadmap

  • User authentication system
  • Link management with CRUD operations
  • AI-powered link summarization (Groq Llama 3.3)
  • Event creation and management
  • Push notification system (Expo + AWS)
  • Category and tag system
  • Personal annotations
  • Mobile application (iOS/Android)
  • Web admin dashboard
  • Offline mode for mobile app
  • Link bookmarking with read-later functionality
  • Collaboration features (share links/events)
  • Browser extension for quick link saving
  • Advanced AI analytics dashboard
  • Dark/Light theme toggle
  • Multi-language support
  • PWA support for web app

See the open issues for a full list of proposed features and known issues.

(back to top)


License

Distributed under the MIT License. See LICENSE for more information.

(back to top)


Contact

Victor Ribeiro Baradel: My Linkedin

Application: My application repository

(back to top)


Developed as a Technical Thesis (TCC) at Etec Lauro Gomes - Technical Course in Internet Computing (Informática para a Internet) - São Bernardo do Campo, SP - Brazil

7 months of development | 10 hours per day | Full-stack multiplatform solution

Back to top

About

Intelligent productivity app that helps you organize your digital life — save links with AI-generated summaries, schedule events with push notifications, and manage personal notes. Built as a full-stack multiplatform solution (iOS, Android & Web).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors