Back to .md Directory

๐Ÿค– AI Tools Platform - Project Plan

> Personal AI tools collection for content creation across multiple platforms

May 2, 2026
0 downloads
0 views
ai llm rag prompt
View source

๐Ÿค– AI Tools Platform - Project Plan

Personal AI tools collection for content creation across multiple platforms

๐Ÿ“‹ Overview

A modular AI-powered content creation platform built with Next.js, designed to leverage multiple LLM models via OpenRouter. Each tool operates independently with its own system instructions, model configurations, and output formats.


๐ŸŽฏ Project Goals

Phase 1: MVP (Current)

  • Core architecture setup
  • OpenRouter integration
  • 2-3 initial tools (Story Creator, Social Media Post Generator)
  • Simple UI for tool selection and content generation
  • Deploy to Netlify for testing

Phase 2: Enhancement

  • Add more tools
  • Template/prompt library
  • History/saved generations
  • Export options (copy, download)

Phase 3: Production Ready

  • Authentication (NextAuth/Clerk)
  • Rate limiting
  • Queue system for heavy operations
  • Usage analytics
  • Database integration

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         Frontend                             โ”‚
โ”‚  Next.js App Router + React + TailwindCSS + shadcn/ui       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                        API Layer                             โ”‚
โ”‚  Next.js API Routes (Route Handlers)                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                     Services Layer                           โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚ OpenRouter   โ”‚  โ”‚   Tools      โ”‚  โ”‚   Prompts    โ”‚      โ”‚
โ”‚  โ”‚   Service    โ”‚  โ”‚   Registry   โ”‚  โ”‚   Manager    โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚                    Configuration                             โ”‚
โ”‚  Tools Config โ”‚ Models Config โ”‚ System Instructions         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Project Structure

ai-tools/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                          # Next.js App Router
โ”‚   โ”‚   โ”œโ”€โ”€ layout.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ page.tsx                  # Dashboard/Home
โ”‚   โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ page.tsx              # Tools listing
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ [toolId]/
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ page.tsx          # Individual tool page
โ”‚   โ”‚   โ””โ”€โ”€ api/
โ”‚   โ”‚       โ”œโ”€โ”€ generate/
โ”‚   โ”‚       โ”‚   โ””โ”€โ”€ route.ts          # Main generation endpoint
โ”‚   โ”‚       โ””โ”€โ”€ tools/
โ”‚   โ”‚           โ””โ”€โ”€ route.ts          # Get available tools
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ ui/                       # shadcn/ui components
โ”‚   โ”‚   โ”œโ”€โ”€ layout/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ header.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ sidebar.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ footer.tsx
โ”‚   โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ tool-card.tsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ tool-form.tsx
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ tool-output.tsx
โ”‚   โ”‚   โ””โ”€โ”€ common/
โ”‚   โ”‚       โ”œโ”€โ”€ loading.tsx
โ”‚   โ”‚       โ””โ”€โ”€ error-boundary.tsx
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ openrouter/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ client.ts             # OpenRouter API client
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ models.ts             # Available models config
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ types.ts
โ”‚   โ”‚   โ”œโ”€โ”€ tools/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ registry.ts           # Tool registration system
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ types.ts              # Tool type definitions
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ executor.ts           # Tool execution logic
โ”‚   โ”‚   โ””โ”€โ”€ utils/
โ”‚   โ”‚       โ”œโ”€โ”€ cn.ts                 # classnames utility
โ”‚   โ”‚       โ””โ”€โ”€ format.ts
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”‚   โ”œโ”€โ”€ tools/                    # Tool configurations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ index.ts              # Export all tools
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ story-creator.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ social-media-post.ts
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ image-prompt.ts
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚   โ”œโ”€โ”€ models.ts                 # OpenRouter models config
โ”‚   โ”‚   โ””โ”€โ”€ site.ts                   # Site configuration
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ prompts/                      # System instructions
โ”‚   โ”‚   โ”œโ”€โ”€ story/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ reels.md
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ short-form.md
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ long-form.md
โ”‚   โ”‚   โ”œโ”€โ”€ social/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ vk.md
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ dzen.md
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ facebook.md
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ general.md
โ”‚   โ”‚   โ””โ”€โ”€ image/
โ”‚   โ”‚       โ”œโ”€โ”€ midjourney-style.md
โ”‚   โ”‚       โ””โ”€โ”€ dalle-style.md
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ hooks/
โ”‚   โ”‚   โ”œโ”€โ”€ use-generation.ts         # Generation hook
โ”‚   โ”‚   โ”œโ”€โ”€ use-tools.ts              # Tools fetching
โ”‚   โ”‚   โ””โ”€โ”€ use-copy.ts               # Copy to clipboard
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ types/
โ”‚       โ”œโ”€โ”€ tool.ts
โ”‚       โ”œโ”€โ”€ generation.ts
โ”‚       โ””โ”€โ”€ api.ts
โ”‚
โ”œโ”€โ”€ public/
โ”‚   โ””โ”€โ”€ icons/                        # Tool icons
โ”‚
โ”œโ”€โ”€ .env.local                        # Environment variables
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ next.config.ts
โ”œโ”€โ”€ tailwind.config.ts
โ”œโ”€โ”€ tsconfig.json
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ README.md

๐Ÿ› ๏ธ Tech Stack

CategoryTechnology
FrameworkNext.js 14+ (App Router)
LanguageTypeScript
StylingTailwindCSS + shadcn/ui
AI APIOpenRouter
StateReact hooks + Context (simple)
DeploymentNetlify
Package Managerpnpm

๐Ÿ”ง Tool Configuration System

Each tool is defined by a configuration object:

// src/lib/tools/types.ts
interface ToolConfig {
  id: string;
  name: string;
  description: string;
  icon: string;
  category: ToolCategory;
  
  // Model configuration
  defaultModel: string;
  allowedModels?: string[];
  
  // Input configuration
  inputs: ToolInput[];
  
  // Variants (different system instructions)
  variants: ToolVariant[];
  
  // Generation settings
  settings: {
    maxTokens: number;
    temperature: number;
    topP?: number;
  };
}

interface ToolVariant {
  id: string;
  name: string;
  description: string;
  systemPromptPath: string;  // Path to .md file
  language?: string;
}

interface ToolInput {
  id: string;
  label: string;
  type: 'text' | 'textarea' | 'select' | 'number';
  placeholder?: string;
  required: boolean;
  options?: { value: string; label: string }[];
}

Example Tool Configuration

// src/config/tools/story-creator.ts
export const storyCreatorTool: ToolConfig = {
  id: 'story-creator',
  name: 'Story Creator',
  description: 'Generate engaging stories for social media, reels, or general content',
  icon: 'book-open',
  category: 'content',
  
  defaultModel: 'anthropic/claude-3-haiku',
  allowedModels: [
    'anthropic/claude-3-haiku',
    'anthropic/claude-3-sonnet',
    'openai/gpt-4o-mini',
    'google/gemini-flash-1.5',
  ],
  
  inputs: [
    {
      id: 'topic',
      label: 'Topic or Theme',
      type: 'textarea',
      placeholder: 'What should the story be about?',
      required: true,
    },
    {
      id: 'tone',
      label: 'Tone',
      type: 'select',
      required: true,
      options: [
        { value: 'engaging', label: 'Engaging' },
        { value: 'emotional', label: 'Emotional' },
        { value: 'funny', label: 'Funny' },
        { value: 'inspiring', label: 'Inspiring' },
      ],
    },
    {
      id: 'length',
      label: 'Length',
      type: 'select',
      required: true,
      options: [
        { value: 'short', label: 'Short (30-60 sec read)' },
        { value: 'medium', label: 'Medium (1-2 min read)' },
        { value: 'long', label: 'Long (3-5 min read)' },
      ],
    },
  ],
  
  variants: [
    {
      id: 'reels',
      name: 'Instagram Reels',
      description: 'Hook-driven stories for short video content',
      systemPromptPath: 'story/reels.md',
    },
    {
      id: 'tiktok',
      name: 'TikTok Story',
      description: 'Viral-style storytelling for TikTok',
      systemPromptPath: 'story/tiktok.md',
    },
    {
      id: 'general',
      name: 'General Story',
      description: 'Classic storytelling format',
      systemPromptPath: 'story/general.md',
    },
    {
      id: 'russian',
      name: 'Russian Story',
      description: 'Stories optimized for Russian audience',
      systemPromptPath: 'story/russian.md',
      language: 'ru',
    },
  ],
  
  settings: {
    maxTokens: 1500,
    temperature: 0.8,
  },
};

๐Ÿ“ฑ Initial Tools (MVP)

1. Story Creator

  • Purpose: Generate engaging stories
  • Variants: Reels, TikTok, General, Language-specific
  • Inputs: Topic, tone, length, target audience

2. Social Media Post Generator

  • Purpose: Create platform-specific posts
  • Variants: VK, Dzen, Facebook, Instagram, Twitter/X
  • Inputs: Topic, platform, hashtag count, CTA type

3. Image Prompt Generator

  • Purpose: Create prompts for AI image generators
  • Variants: Midjourney style, DALL-E style, Stable Diffusion
  • Inputs: Subject, style, mood, aspect ratio

4. Content Repurposer (Future)

  • Purpose: Convert content between formats
  • Variants: Blog โ†’ Thread, Video โ†’ Post, etc.

๐Ÿ”Œ OpenRouter Integration

// src/lib/openrouter/client.ts
const OPENROUTER_API_URL = 'https://openrouter.ai/api/v1/chat/completions';

export const createCompletion = async (params: {
  model: string;
  systemPrompt: string;
  userMessage: string;
  maxTokens: number;
  temperature: number;
}): Promise<string> => {
  const response = await fetch(OPENROUTER_API_URL, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.OPENROUTER_API_KEY}`,
      'HTTP-Referer': process.env.NEXT_PUBLIC_SITE_URL,
      'X-Title': 'AI Tools',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: params.model,
      messages: [
        { role: 'system', content: params.systemPrompt },
        { role: 'user', content: params.userMessage },
      ],
      max_tokens: params.maxTokens,
      temperature: params.temperature,
    }),
  });
  
  if (!response.ok) {
    throw new Error(`OpenRouter API error: ${response.status}`);
  }
  
  const data = await response.json();
  return data.choices[0].message.content;
};

๐ŸŒ API Routes

POST /api/generate

Main generation endpoint

// Request
{
  toolId: string;
  variantId: string;
  modelId?: string;        // Optional, uses default if not provided
  inputs: Record<string, string>;
}

// Response
{
  success: boolean;
  content: string;
  model: string;
  tokensUsed: number;
}

GET /api/tools

Get all available tools

// Response
{
  tools: ToolConfig[];
}

๐ŸŽจ UI/UX Design

Pages

  1. Home/Dashboard

    • Quick access to recent tools
    • Tool categories grid
    • Quick generation shortcuts
  2. Tools List

    • Categorized tool cards
    • Search/filter functionality
  3. Tool Page

    • Input form on left
    • Output/preview on right
    • Variant selector
    • Model selector (collapsible/advanced)
    • Copy/export buttons

Design Principles

  • Clean, minimal interface
  • Dark mode by default (with toggle)
  • Responsive design
  • Keyboard shortcuts for power users

๐Ÿš€ Deployment (Netlify)

Environment Variables

OPENROUTER_API_KEY=sk-or-...
NEXT_PUBLIC_SITE_URL=https://your-app.netlify.app

Build Settings

# netlify.toml
[build]
  command = "pnpm build"
  publish = ".next"

[[plugins]]
  package = "@netlify/plugin-nextjs"

๐Ÿ“… Development Phases

Week 1: Foundation

  • Create project plan
  • Initialize Next.js project with TypeScript
  • Set up TailwindCSS + shadcn/ui
  • Create project structure
  • Implement OpenRouter client

Week 2: Core Features

  • Build tool configuration system
  • Create tool registry
  • Implement first tool (Story Creator)
  • Build basic UI components

Week 3: Polish & Deploy

  • Add 2-3 more tools
  • Build responsive layouts
  • Add loading states & error handling
  • Deploy to Netlify
  • Test & iterate

๐Ÿ”ฎ Future Enhancements (Phase 2-3)

Authentication

  • NextAuth.js or Clerk
  • Social login (Google, GitHub)
  • Usage tracking per user

Database

  • Supabase or PlanetScale
  • Save generation history
  • User preferences
  • Prompt templates

Advanced Features

  • Streaming responses
  • Queue system (Upstash/BullMQ)
  • Rate limiting
  • API key management for multi-user
  • Custom prompt editor
  • A/B testing for prompts

Analytics

  • Usage metrics
  • Popular tools tracking
  • Model performance comparison

๐Ÿ“ Notes

  • Keep initial implementation simple - no over-engineering
  • System prompts stored as markdown for easy editing
  • Use streaming for better UX when needed
  • All tools should work offline (with mock data) for development

๐Ÿ”— Resources

Related Documents