ProjectFlow

by aykay76

Not rated
GitHub

About

A workflow management system for AI-assisted development with MCP support, featuring flexible storage via file system or PostgreSQL.

Details

Author
aykay76
Categories
Developer Tools, Other, File Management

Setup

Install ProjectFlow in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/aykay76/projectflow

Follow the installation instructions in the repository README, then restart your MCP client.

A workflow management system for AI-assisted development, similar to Jira or Azure DevOps. Supports both API-driven interactions and Model Context Protocol for seamless AI agent integration.

- Hierarchical task management (Epics, Stories, Subtasks)
- πŸš€ NEW: Natural Language Chat Interface- Interact with ProjectFlow using conversational commands
- REST API for programmatic access
- Model Context Protocol (MCP) support for AI agents
- Web interface for human users
- Flexible storage: File system (JSON) or PostgreSQL database
- Clean, modern UI with accessibility features
- Containerized deployment

- Backend: Go 1.24
- Storage: File system (JSON) or PostgreSQL database
- Frontend: HTML templates, CSS, JavaScript
- Containerization: Docker/Podman
- Protocols: HTTP REST API + Model Context Protocol

- Go 1.24 or later
- Docker/Podman (for containerized deployment)

git clone https://github.com/aykay76/projectflow.git cd projectflow

Open your browser and navigate tohttp://localhost:16191

ProjectFlow now features an AI-powered chat interface that allows you to manage tasks and projects using natural language commands. Simply click the chat button (πŸ’¬) in the header or use the keyboard shortcut⌘+/(Mac) orCtrl+/(Windows/Linux) to get started.

Create a high priority task to fix the login bug List all tasks in the PF project Mark task PF-123 as done Show me overdue tasks Create a new project called "Website Redesign"

- Open the chat interface: Click the πŸ’¬ button in the header or press⌘+/
- Type your request: Use natural language to describe what you want to do
- Get instant results: The AI will interpret your request and perform the action

For detailed chat commands and examples, see theChat Interface Guide.

The chat interface supports multiple LLM providers:

- πŸš€ Ollama: Use local LLM models for privacy and offline capability
- OpenAI GPT: Use OpenAI's GPT models for natural language understanding
- Groq: Fast cloud-based LLM inference
- Anthropic Claude: Leverage Anthropic's Claude AI for conversational interactions

For the fastest setup with privacy and no API costs:

# Install Ollama brew install ollama # macOS # or curl -fsSL https://ollama.com/install.sh | sh # Linux # Start Ollama and install a model ollama serve & ollama pull llama3.2 # Configure ProjectFlow export LLM_PROVIDER=ollama export LLM_OLLAMA_MODEL=llama3.2 ./projectflow

See theOllama Quick Start Guidefor detailed setup instructions.

For cloud-based LLMs, configure your API key:

# For OpenAI export LLM_PROVIDER=openai export LLM_API_KEY=your-openai-key export LLM_MODEL=gpt-4 # For Groq export LLM_PROVIDER=groq export LLM_API_KEY=your-groq-key export LLM_MODEL=llama-3.1-8b-instant

- PORT: Server port (default: 16191)
- SHUTDOWN_TIMEOUT: Graceful shutdown timeout in seconds (default: 30)
- LOG_LEVEL: Logging level - DEBUG, INFO, WARN, ERROR (default: INFO)
- LOG_FORMAT: Log format - json or text (default: text)

- STORAGE_TYPE: Storage backend - file or postgres (default: file)

- DATA_DIR: Directory for data storage (default: ./data)

- DB_HOST: Database host (default: localhost)
- DB_PORT: Database port (default: 5432)
- DB_NAME: Database name (default: projectflow)
- DB_USER: Database user (default: projectflow)
- DB_PASSWORD: Database password (required for postgres)
- DB_SSL_MODE: SSL mode - disable, require, verify-ca, verify-full, prefer, allow (default: prefer)

- LLM_PROVIDER: LLM provider - ollama, groq, openai, disabled (default: disabled)
- LLM_API_KEY: API key for cloud LLM providers (required for groq, openai)
- LLM_BASE_URL: Custom base URL for the LLM provider (optional)
- LLM_MODEL: Model name to use (default varies by provider)
- LLM_TIMEOUT: Request timeout in seconds (default: 60)
- LLM_MAX_TOKENS: Maximum tokens per response (default: 1000)

- LLM_OLLAMA_HOST: Ollama server URL (default:http://localhost:11434)
- LLM_OLLAMA_MODEL: Ollama model name (default: llama3.2)

For detailed PostgreSQL setup, seePostgreSQL Storage Documentation.

podman run -p 16191:16191 -v $(pwd)/data:/app/data projectflow

- POST /api/chat- Send a natural language message to the chat interface
- GET /api/chat/history- Retrieve conversation history

- GET /api/llm/info- Get LLM provider information and status
- GET /api/llm/health- Check LLM provider health
- POST /api/llm/chat- Send direct messages to the LLM (bypasses ProjectFlow translation)

POST /api/chat { "message": "Create a high priority task to fix the login bug", "conversation_id": "optional-uuid" }
{ "response": "I've created task PF-123: 'Fix login bug' with high priority.", "actions_taken": ["create_task"], "task_ids": ["PF-123"], "conversation_id": "uuid", "confidence": 0.95, "intent": "create_task" }
GET /api/chat/history?conversation_id=uuid { "id": "uuid", "messages": [ { "id": "msg-uuid", "role": "user", "content": "Create a task...", "timestamp": "2025-06-22T15:17:44.334579Z" } ], "created": "2025-06-22T15:17:44.334574Z", "updated": "2025-06-22T15:17:44.334574Z" }
GET /api/llm/info { "enabled": true, "provider": "ollama", "model": "llama3.2", "status": "healthy", "timestamp": "2025-06-23T08:56:47.927Z", "metadata": { "host": "http://localhost:11434", "version": "0.1.17" } }
GET /api/llm/health { "healthy": true, "status": "healthy", "provider": "ollama", "timestamp": "2025-06-23T08:56:47.927Z", "duration_ms": 45, "suggestions": [] }
POST /api/llm/chat { "messages": [ {"role": "user", "content": "Hello!"} ], "max_tokens": 1000, "temperature": 0.7 } Response: { "response": { "choices": [ { "message": { "role": "assistant", "content": "Hello! How can I help you today?" }, "finish_reason": "stop" } ] }, "provider": "ollama", "model": "llama3.2" }

- GET /api/tasks- List all tasks
- POST /api/tasks- Create a new task
- GET /api/tasks/{id}- Get task by ID
- PUT /api/tasks/{id}- Update task
- DELETE /api/tasks/{id}- Delete task
- GET /api/hierarchy- Get tasks in hierarchical structure

{ "id": "string", "title": "string", "description": "string", "status": "string", "priority": "string", "parent_id": "string", "children": ["string"], "created_at": "timestamp", "updated_at": "timestamp" }

The/api/hierarchyendpoint returns tasks in a nested structure:

[ { "task": { "id": "string", "title": "string", "description": "string", "status": "string", "priority": "string", "type": "string", "parent_id": "string", "children": ["string"], "created_at": "timestamp", "updated_at": "timestamp" }, "child_tasks": [ { "task": { / nested task / }, "child_tasks": [ / recursively nested / ] } ] } ]
β”œβ”€β”€ cmd/server/ # Application entry point β”œβ”€β”€ internal/ β”‚ β”œβ”€β”€ handlers/ # HTTP handlers β”‚ β”œβ”€β”€ models/ # Data models β”‚ └── storage/ # Storage implementations β”œβ”€β”€ pkg/api/ # Public API definitions β”œβ”€β”€ web/ β”‚ β”œβ”€β”€ templates/ # HTML templates β”‚ └── static/ # CSS, JS, images β”œβ”€β”€ data/ # Local data storage └── Dockerfile # Container definition
go build -o bin/projectflow cmd/server/main.go

ProjectFlow includes a Model Context Protocol (MCP) server that enables AI agents to interact with tasks programmatically. This allows AI assistants to create, read, update, and delete tasks as part of their workflow.

The MCP server runs on port 3001 by default.

Configure your MCP client:Use the providedmcp-config.jsonfile or configure manually:

{ "mcpServers": { "projectflow": { "command": "go", "args": ["run", "cmd/mcp-server/main.go"], "cwd": "/path/to/projectflow" } } }

…

No reviews yet β€” be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.