From b57bcd8cdeb25d5b2c48a08a2ee55d95d9d040cd Mon Sep 17 00:00:00 2001 From: LSUDOKO Date: Tue, 14 Jul 2026 01:33:39 +0530 Subject: [PATCH 1/3] docs: comprehensive hackathon README - Problem statement with real user personas (Alex, Jordan, Taylor) - Full feature documentation for all 11 features with examples - Architecture diagram (ASCII) - Technology stack table - Required hackathon tech alignment (Slack AI, MCP, RTS) - Getting started guide - Project structure - Impact statistics - Slash commands reference table - Submission details --- README.md | 472 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 470 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 714818b..1b6fba9 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,470 @@ -# signal -Signal is a Slack agent that makes work chat less overwhelming and more understandable for people with ADHD and autismβ€”using AI to translate social tone, smart search to answer "what did I miss?", and calendar integration to protect focus time. +
+ +# 🧘 Signal +### Calm Slack for Neurodivergent Professionals + +**The first Slack agent designed for cognitive accessibility** + +Built for the [Slack Agent Builder Challenge](https://slack-agent-builder-challenge.devpost.com/) · July 2026 + +[![Slack Agent for Good](https://img.shields.io/badge/Track-Slack%20Agent%20for%20Good-4f46e5?style=flat-square)](https://slack.com) +[![Go](https://img.shields.io/badge/Go-1.22-00ADD8?style=flat-square&logo=go)](https://golang.org) +[![Groq AI](https://img.shields.io/badge/AI-Groq%20LLaMA%203.3-f97316?style=flat-square)](https://groq.com) +[![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) + +
+ +--- + +## The Problem + +**15–20% of the global workforce is neurodivergent** β€” people with ADHD, autism, anxiety disorders, and other cognitive differences. Slack is the default communication tool at most companies. It was not designed for them. + +Here's what their day looks like: + +> **Alex (ADHD, Software Engineer):** Returns from a 45-minute meeting. 127 unread messages. Which ones matter? He spends 40 minutes scrolling. Misses the deployment decision made at 2:13 PM. His manager asks why he wasn't prepared. He has no answer. + +> **Jordan (Autistic, Product Manager):** Receives this message: *"Per my last email, we really need to align on this before EOD."* She spends three hours wondering if she's about to be fired. Was that passive-aggressive? Did she do something wrong? She's afraid to respond. + +> **Taylor (ADHD, Designer):** Gets 14 @mentions during a 2-hour deep work session. Each notification breaks her focus. She tries turning off Slack. She misses a production incident. + +**There is not a single tool in the Slack Marketplace that addresses these problems for neurodivergent professionals.** Until now. + +--- + +## The Solution + +Signal is a Slack agent that transforms overwhelming, ambiguous, and interruptive Slack experiences into calm, structured, and comprehensible interactions β€” with zero extra apps, zero new tools, and zero learning curve. + +Everything happens inside Slack. One `/signal` command to see everything it can do. + +--- + +## Features + +### πŸ” Social Translator +`/translate [message]` + +Decodes passive-aggressive, ambiguous, or emotionally loaded workplace messages into plain language. Tells you the **tone**, **what the sender actually wants**, **what you should do**, and the **hidden social subtext** β€” explained directly, without euphemism. + +``` +/translate Per my last email, the deployment needs to be done by EOD. +``` +β†’ **Tone:** Frustrated / Urgent +β†’ **Intent:** They want confirmation the task is being done today +β†’ **Action:** Reply with your ETA or ask for clarification +β†’ **Note:** "Per my last email" signals the sender feels ignored. A quick reply defuses the tension. + +Auto-detects passive-aggressive phrases in channels and sends translations privately β€” no one else sees it. + +--- + +### πŸŽ›οΈ Neurotype Mode +`/mode [adhd|autism|anxiety|ally]` + +Personalizes every Signal feature to your cognitive profile. One command, and the entire system adapts. + +| Mode | What Changes | +|------|-------------| +| **ADHD** | Focus triggers at 30 messages (not 50), summaries are bullet-only, digest shows urgent items only, deep work auto-detects | +| **Autism** | Translator always on, AI responses are literal and explicit, passive-aggressive language is named directly | +| **Anxiety** | Calm reassuring tone in all AI responses, translator confirms neutral messages as non-threatening, Focus Guard always active | +| **Ally** | Optimized for teammates supporting neurodivergent colleagues β€” includes "why this matters" context | + +--- + +### πŸ“‹ What Did I Miss? (Catch-Up) +`/catchup [question]` + +Semantic search across your accessible Slack channels. Answer any question about what happened while you were away β€” without keyword matching, without scrolling. + +``` +/catchup what did we decide about the Q3 budget? +/catchup any updates on the API migration? +/catchup what happened in engineering today? +``` + +Uses Slack's **Real-Time Search API** + Groq AI summarization to return structured "What You Missed" digests organized by topic, decision, and required action. + +--- + +### ⚑ Focus Guard +`/focus [duration]` + +Starts a deep work session. Signal: +- Sets your Slack status to 🧘 *In Deep Work β€” back at [time]* +- Blocks the time on your **Google Calendar** via MCP integration +- Activates smart DM auto-responder with AI urgency classification +- Pauses non-urgent digest delivery + +**Smart URGENT bypass:** Incoming DMs during deep work are classified by AI as URGENT / NORMAL / LOW. If someone types "URGENT" or their message is classified as a production incident, the deep work block is immediately bypassed and you're notified. + +``` +/focus 2h β†’ 2-hour deep work session +/focus 90 β†’ 90-minute session +/focus β†’ default 2 hours +``` + +--- + +### βœ… Decision Search +`/decisions [#channel] [days]` + +Scans a channel's recent history and extracts every formal decision, who made it, and what action items followed. Stops the "wait, what did we decide about X?" conversation. + +``` +/decisions #engineering 7 β†’ last 7 days of decisions +/decisions #design 14 β†’ last 14 days +``` + +AI extracts decisions, context, and action items β€” formatted as a clean log. + +--- + +### πŸ“‹ Thread Summaries +React with **πŸ“‹** on any Slack message + +Instantly summarizes the full thread. Only you see the summary (ephemeral). Neurotype-aware framing β€” ADHD mode gives bullet-only summaries, autism mode is explicit and literal. + +No commands. No typing. Just react. + +--- + +### πŸ“‹ AI Action Planner +`/plan [your goal]` + +Turns any natural language goal into a structured, neurotype-aware task list. + +``` +/plan I need to finish the Q3 report, review Alex's PR, and prepare for demo +``` + +- **ADHD mode:** Energy labels (πŸ”‹ Low / ⚑ Medium / πŸš€ High), short 2-minute tasks +- **Autism mode:** Literal step-by-step instructions, exact completion criteria +- **Anxiety mode:** Starts with easiest task, includes βœ… checkpoints + +Uses **AI Workspace Memory** β€” remembers your last 10 interactions to personalize plans. + +--- + +### πŸ“¬ Daily Digest +`/digest` + +Batches all your @mentions, thread replies, and DMs into a structured digest organized by urgency: + +- πŸ”΄ **Urgent** β€” needs response today +- 🟑 **Action Required** β€” this week +- 🟒 **FYI** β€” no action needed + +Configurable delivery time. If you have a meeting in 15 minutes (via Calendar MCP), digest delivery is intelligently postponed. + +--- + +### πŸ™ GitHub MCP +`/github [query]` + +Search your GitHub organization directly from Slack. + +``` +/github open PRs β†’ your open pull requests +/github issues β†’ open issues in the org +/github repo signal β†’ repository info and stats +/github bugs assigned to me β†’ issues labeled 'bug' assigned to you +``` + +Powered by real GitHub Search API β€” not a mock. + +--- + +### πŸ“š Docs MCP (Notion) +`/docs [search query]` + +Search your Notion workspace from Slack. + +``` +/docs onboarding guide +/docs how to deploy to production +/docs Q3 roadmap +``` + +Returns matching pages with titles, types, last-edited dates, and direct links. + +--- + +### 🧠 AI Workspace Memory +Automatic β€” no command needed + +Signal remembers your last 10 interactions (7-day rolling window, stored in Redis). This context is injected into `/plan`, action recommendations, and AI responses β€” making every feature more personalized over time. + +--- + +## Architecture + +``` +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Slack Workspace β”‚ +β”‚ User types /translate, /focus, /plan, reacts with πŸ“‹, etc. β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ Socket Mode WebSocket + β–Ό +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Signal API (Go) β”‚ +β”‚ β”‚ +β”‚ EventHandler β†’ FeatureController β†’ Feature Services β”‚ +β”‚ β”‚ +β”‚ β”œβ”€β”€ /translate β†’ AI Tone Analysis (Groq LLaMA 3.3) β”‚ +β”‚ β”œβ”€β”€ /catchup β†’ RTS API + AI Summary β”‚ +β”‚ β”œβ”€β”€ /focus β†’ Redis State + MCP Calendar β”‚ +β”‚ β”œβ”€β”€ /plan β†’ AI Planner + Memory (Redis) β”‚ +β”‚ β”œβ”€β”€ /decisions β†’ Channel History + AI Extraction β”‚ +β”‚ β”œβ”€β”€ /mode β†’ PostgreSQL Preferences Update β”‚ +β”‚ β”œβ”€β”€ /github β†’ GitHub Search API β”‚ +β”‚ β”œβ”€β”€ /docs β†’ Notion Search API β”‚ +β”‚ β”œβ”€β”€ /digest β†’ RTS + AI Categorization β”‚ +β”‚ └── πŸ“‹ react β†’ Thread Fetch + AI Summary β”‚ +β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ β”‚ + β–Ό β–Ό +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ PostgreSQL β”‚ β”‚ MCP Server (Go) β”‚ +β”‚ β”‚ β”‚ β”‚ +β”‚ Users β”‚ β”‚ block_focus_time β”‚ +β”‚ Preferences β”‚ β”‚ get_user_status β”‚ +β”‚ Digests β”‚ β”‚ set_slack_status β”‚ +β”‚ Summaries β”‚ β”‚ β”‚ β”‚ +β”‚ Translationsβ”‚ β”‚ β–Ό β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ Google Calendar API β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β–Ό +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Redis β”‚ +β”‚ β”‚ +β”‚ AI Memory β”‚ +β”‚ Deep Work β”‚ +β”‚ Velocity β”‚ +β”‚ Rate Limits β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +**Technologies used:** + +| Layer | Technology | +|-------|-----------| +| Language | Go 1.22 | +| Slack Integration | Socket Mode (slack-go/slack) | +| AI | Groq API (LLaMA 3.3 70B) via OpenAI-compatible SDK | +| Real-Time Search | Slack RTS API (`search.messages`) | +| MCP | Custom Go MCP server (HTTP/SSE) | +| Calendar | Google Calendar API (Service Account) | +| Database | PostgreSQL 16 (pgx driver) | +| Cache / Memory | Redis 7 | +| Background Jobs | Asynq | +| HTTP Router | chi/v5 | +| Config | cleanenv | +| Observability | Prometheus + structured slog | +| Deployment | Render (API + Worker + Postgres + Redis) | + +--- + +## Required Technologies (Hackathon) + +Signal uses all three required technologies: + +### 1. Slack AI Capabilities +- Tone analysis via Groq LLaMA 3.3 70B (OpenAI-compatible) +- Focus Mode decision tree summaries +- Catch-Up semantic digests +- Thread summarization +- Action planning with neurotype-aware framing +- Urgency classification for smart notifications + +### 2. MCP Server Integration +- Custom Go MCP server exposing `block_focus_time`, `get_user_status`, `set_slack_status` +- Google Calendar API integration for real focus time blocking +- GitHub API integration via `/github` command +- Notion API integration via `/docs` command + +### 3. Real-Time Search API +- `/catchup` uses `search.messages` to find relevant messages semantically +- `/digest` uses RTS to surface recent mentions +- Results are passed to AI for structured summarization + +--- + +## Getting Started + +### Prerequisites + +- Go 1.22+ +- Docker and Docker Compose +- A Slack workspace (free works) +- Groq API key (free tier available at [console.groq.com](https://console.groq.com)) + +### 1. Clone and configure + +```bash +git clone https://github.com/LSUDOKO/signal.git +cd signal +cp .env.example .env +``` + +Edit `.env` and fill in your credentials: + +```bash +# Required +SLACK_BOT_TOKEN=xoxb-... +SLACK_APP_TOKEN=xapp-... +SLACK_SIGNING_SECRET=... +OPENAI_API_KEY=gsk_... # Your Groq API key +OPENAI_BASE_URL=https://api.groq.com/openai/v1 +OPENAI_MODEL=llama-3.3-70b-versatile + +# Optional (enables GitHub + Notion + Calendar MCP) +GITHUB_TOKEN=ghp_... +GITHUB_ORG=your-org +NOTION_TOKEN=secret_... +MCP_CALENDAR_CREDENTIALS_PATH=/path/to/google-credentials.json +``` + +### 2. Start infrastructure + +```bash +make dev +# Starts PostgreSQL and Redis via Docker Compose +``` + +### 3. Create your Slack app + +1. Go to [api.slack.com/apps](https://api.slack.com/apps) β†’ "Create New App" β†’ "From manifest" +2. Paste the contents of `slack-manifest.yml` +3. Install to your workspace +4. Copy the Bot Token, App Token, and Signing Secret to `.env` + +### 4. Run Signal + +```bash +# Terminal 1: API server + Slack bot +cd api && go run ./cmd/api/main.go + +# Terminal 2: MCP server (Calendar integration) +cd api && go run ./cmd/mcp-server/main.go +``` + +### 5. Test it + +In your Slack workspace: +``` +/signal β†’ see all commands +/mode adhd β†’ activate ADHD mode +/translate per my last email, we need this done today +/plan prepare for the demo tomorrow +``` + +--- + +## Slash Commands Reference + +| Command | Description | +|---------|-------------| +| `/signal` | Help menu β€” lists all commands | +| `/mode [adhd\|autism\|anxiety\|ally]` | Set neurotype mode | +| `/translate [message]` | Decode ambiguous workplace language | +| `/catchup [question]` | AI summary of what you missed | +| `/focus [duration]` | Start deep work session | +| `/decisions [#channel] [days]` | Find all decisions in a channel | +| `/plan [goal]` | AI action planner | +| `/digest` | Instant digest of recent mentions | +| `/github [query]` | Search GitHub PRs, issues, repos | +| `/docs [query]` | Search Notion workspace | +| React πŸ“‹ | Summarize any thread (ephemeral) | + +--- + +## Project Structure + +``` +signal/ +β”œβ”€β”€ api/ Go backend +β”‚ β”œβ”€β”€ cmd/ +β”‚ β”‚ β”œβ”€β”€ api/main.go Main API server + Slack Socket Mode +β”‚ β”‚ β”œβ”€β”€ worker/main.go Asynq background job worker +β”‚ β”‚ └── mcp-server/main.go MCP server (Calendar, tools) +β”‚ β”œβ”€β”€ internal/ +β”‚ β”‚ β”œβ”€β”€ ai/ Groq/OpenAI client + all prompts +β”‚ β”‚ β”œβ”€β”€ config/ Environment config (cleanenv) +β”‚ β”‚ β”œβ”€β”€ domain/ Business entities and types +β”‚ β”‚ β”œβ”€β”€ features/ All feature implementations +β”‚ β”‚ β”‚ β”œβ”€β”€ controller.go Event router + command dispatcher +β”‚ β”‚ β”‚ β”œβ”€β”€ translator.go Social Translator +β”‚ β”‚ β”‚ β”œβ”€β”€ focusmode.go Channel velocity + AI summaries +β”‚ β”‚ β”‚ β”œβ”€β”€ catchup.go RTS semantic search +β”‚ β”‚ β”‚ β”œβ”€β”€ deepwork.go Deep Work + MCP calendar +β”‚ β”‚ β”‚ β”œβ”€β”€ digest.go Quiet Hours Digest +β”‚ β”‚ β”‚ β”œβ”€β”€ mode.go Neurotype mode personalization +β”‚ β”‚ β”‚ β”œβ”€β”€ decisions.go Decision extraction +β”‚ β”‚ β”‚ β”œβ”€β”€ planner.go AI Action Planner +β”‚ β”‚ β”‚ β”œβ”€β”€ threadsummary.go Thread summary on reaction +β”‚ β”‚ β”‚ β”œβ”€β”€ memory.go AI Workspace Memory (Redis) +β”‚ β”‚ β”‚ β”œβ”€β”€ github.go GitHub MCP +β”‚ β”‚ β”‚ └── docs.go Docs MCP (Notion) +β”‚ β”‚ β”œβ”€β”€ httpapi/ REST API (OAuth, preferences) +β”‚ β”‚ β”œβ”€β”€ mcp/ MCP server + Google Calendar client +β”‚ β”‚ β”œβ”€β”€ rts/ Real-Time Search client +β”‚ β”‚ β”œβ”€β”€ slack/ Socket Mode event handler +β”‚ β”‚ β”œβ”€β”€ store/ PostgreSQL + Redis repositories +β”‚ β”‚ └── observability/ Prometheus metrics + structured logging +β”‚ └── db/migrations/ SQL schema migrations +β”œβ”€β”€ slack-manifest.yml Slack app configuration +β”œβ”€β”€ render.yaml Render deployment config +β”œβ”€β”€ docker-compose.yml Local development infrastructure +└── Makefile Development commands +``` + +--- + +## Impact + +**Who this helps:** + +- **ADHD professionals** who lose hours to information overload every day +- **Autistic professionals** who spend enormous energy decoding social subtext +- **Anxiety-affected workers** who ruminate over ambiguous messages +- **All neurodivergent people** who feel Slack was built for someone else's brain + +**The numbers:** + +- 1 in 7 people worldwide are neurodivergent (approximately 1 billion people) +- 15–20% of the global workforce +- Neurodivergent employees report Slack as one of their top 3 sources of workplace anxiety +- Zero competitors exist in the Slack Marketplace for this use case + +**Signal is not an accommodation tool. It's a productivity tool that happens to be built around how neurodivergent brains actually work.** Everyone benefits from clearer communication. Signal just makes it explicit. + +--- + +## Hackathon Submission + +**Track:** Slack Agent for Good +**Technologies:** Slack AI Β· MCP Server Integration Β· Real-Time Search API +**Sandbox:** [slackhackathontest.slack.com](https://slackhackathontest.slack.com) + +**Judge access:** +- `slackhack@salesforce.com` β€” invited to workspace +- `testing@devpost.com` β€” invited to workspace + +--- + +## License + +MIT β€” see [LICENSE](LICENSE) + +--- + +
+ +Built with 🧘 for the people Slack forgot to design for. + +**[Demo Video](#) · [Devpost Submission](#) · [Try Signal](#)** + +
From 00a9ca0a7c15be7f26c608ba5a51ea9551b1dc8e Mon Sep 17 00:00:00 2001 From: LSUDOKO Date: Tue, 14 Jul 2026 01:50:56 +0530 Subject: [PATCH 2/3] fix: Render free tier compatibility - Redis URL: handle both 'host:port' and full 'redis://...' formats - config.go: always apply REDIS_URL regardless of current value - main.go: add strings.HasPrefix check before adding redis:// prefix - Prevents double-prefix bug when Render provides full REDIS_URL --- api/cmd/api/main.go | 8 +++++++- api/internal/config/config.go | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/api/cmd/api/main.go b/api/cmd/api/main.go index 9c06f7f..2d1ff78 100644 --- a/api/cmd/api/main.go +++ b/api/cmd/api/main.go @@ -6,6 +6,7 @@ import ( "log/slog" "os" "os/signal" + "strings" "syscall" "github.com/LSUDOKOS/signal/internal/ai" @@ -80,7 +81,12 @@ func main() { postgres.NewTranslationRepository(db) // Initialize Redis cache - cache, err := redis.NewCache(ctx, fmt.Sprintf("redis://%s", cfg.Redis.Addr)) + // Render provides REDIS_URL as a full URL; locally we build it from REDIS_ADDR + redisURL := cfg.Redis.Addr + if !strings.HasPrefix(redisURL, "redis://") && !strings.HasPrefix(redisURL, "rediss://") { + redisURL = "redis://" + redisURL + } + cache, err := redis.NewCache(ctx, redisURL) if err != nil { slog.Error("failed to connect to redis", "error", err) os.Exit(1) diff --git a/api/internal/config/config.go b/api/internal/config/config.go index 128df3d..91d88d2 100644 --- a/api/internal/config/config.go +++ b/api/internal/config/config.go @@ -113,8 +113,8 @@ func Load() (*Config, error) { // because pgx can accept a full DSN. We expose it via RailwayDSN(). cfg.DB.RailwayURL = dbURL } - if redisURL := os.Getenv("REDIS_URL"); redisURL != "" && cfg.Redis.Addr == "localhost:6379" { - cfg.Redis.Addr = redisURL // go-redis accepts full redis:// URL as Addr too + if redisURL := os.Getenv("REDIS_URL"); redisURL != "" { + cfg.Redis.Addr = redisURL // store full URL, main.go handles the prefix check } // Railway injects PORT if port := os.Getenv("PORT"); port != "" { From 21a2990e5606bfd747dfe77aae1090fe58625d6b Mon Sep 17 00:00:00 2001 From: LSUDOKO Date: Tue, 14 Jul 2026 12:52:54 +0530 Subject: [PATCH 3/3] chore: reorganize project structure - Move shell scripts into scripts/{dev,setup,test}/ - Move project docs into project-docs/{specs,setup,testing}/ - Update internal cross-references to use new paths --- frontend/next.config.ts | 4 +++- APPLY_MANIFEST.md => project-docs/setup/APPLY_MANIFEST.md | 0 .../setup/DEMO_WORKSPACE_SETUP.md | 0 .../setup/SLACK_CONFIG_CHECKLIST.md | 0 .../setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md | 0 .../setup/SLACK_FIX_COMMANDS.md | 0 .../specs/SIGNAL_PROJECT_SPEC.md | 0 agent.md => project-docs/specs/agent.md | 0 FINAL_FIX.md => project-docs/testing/FINAL_FIX.md | 0 .../testing/FINAL_STATUS_AND_TESTING.md | 6 +++--- .../testing/WORKING_FEATURES_TEST.md | 6 +++--- watch_logs.sh => scripts/dev/watch_logs.sh | 0 SLACK_CLI_SETUP.sh => scripts/setup/SLACK_CLI_SETUP.sh | 0 test_all_features.sh => scripts/test/test_all_features.sh | 6 +++--- test_slack_token.sh => scripts/test/test_slack_token.sh | 0 15 files changed, 12 insertions(+), 10 deletions(-) rename APPLY_MANIFEST.md => project-docs/setup/APPLY_MANIFEST.md (100%) rename DEMO_WORKSPACE_SETUP.md => project-docs/setup/DEMO_WORKSPACE_SETUP.md (100%) rename SLACK_CONFIG_CHECKLIST.md => project-docs/setup/SLACK_CONFIG_CHECKLIST.md (100%) rename SLACK_EVENT_SUBSCRIPTIONS_FIX.md => project-docs/setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md (100%) rename SLACK_FIX_COMMANDS.md => project-docs/setup/SLACK_FIX_COMMANDS.md (100%) rename SIGNAL_PROJECT_SPEC.md => project-docs/specs/SIGNAL_PROJECT_SPEC.md (100%) rename agent.md => project-docs/specs/agent.md (100%) rename FINAL_FIX.md => project-docs/testing/FINAL_FIX.md (100%) rename FINAL_STATUS_AND_TESTING.md => project-docs/testing/FINAL_STATUS_AND_TESTING.md (98%) rename WORKING_FEATURES_TEST.md => project-docs/testing/WORKING_FEATURES_TEST.md (96%) rename watch_logs.sh => scripts/dev/watch_logs.sh (100%) rename SLACK_CLI_SETUP.sh => scripts/setup/SLACK_CLI_SETUP.sh (100%) rename test_all_features.sh => scripts/test/test_all_features.sh (92%) rename test_slack_token.sh => scripts/test/test_slack_token.sh (100%) diff --git a/frontend/next.config.ts b/frontend/next.config.ts index 14e7524..4029ea0 100644 --- a/frontend/next.config.ts +++ b/frontend/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - output: "standalone", + // output standalone is intentionally omitted β€” Vercel manages its own build output images: { unoptimized: true, }, @@ -11,3 +11,5 @@ const nextConfig: NextConfig = { }; export default nextConfig; + +export default nextConfig; diff --git a/APPLY_MANIFEST.md b/project-docs/setup/APPLY_MANIFEST.md similarity index 100% rename from APPLY_MANIFEST.md rename to project-docs/setup/APPLY_MANIFEST.md diff --git a/DEMO_WORKSPACE_SETUP.md b/project-docs/setup/DEMO_WORKSPACE_SETUP.md similarity index 100% rename from DEMO_WORKSPACE_SETUP.md rename to project-docs/setup/DEMO_WORKSPACE_SETUP.md diff --git a/SLACK_CONFIG_CHECKLIST.md b/project-docs/setup/SLACK_CONFIG_CHECKLIST.md similarity index 100% rename from SLACK_CONFIG_CHECKLIST.md rename to project-docs/setup/SLACK_CONFIG_CHECKLIST.md diff --git a/SLACK_EVENT_SUBSCRIPTIONS_FIX.md b/project-docs/setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md similarity index 100% rename from SLACK_EVENT_SUBSCRIPTIONS_FIX.md rename to project-docs/setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md diff --git a/SLACK_FIX_COMMANDS.md b/project-docs/setup/SLACK_FIX_COMMANDS.md similarity index 100% rename from SLACK_FIX_COMMANDS.md rename to project-docs/setup/SLACK_FIX_COMMANDS.md diff --git a/SIGNAL_PROJECT_SPEC.md b/project-docs/specs/SIGNAL_PROJECT_SPEC.md similarity index 100% rename from SIGNAL_PROJECT_SPEC.md rename to project-docs/specs/SIGNAL_PROJECT_SPEC.md diff --git a/agent.md b/project-docs/specs/agent.md similarity index 100% rename from agent.md rename to project-docs/specs/agent.md diff --git a/FINAL_FIX.md b/project-docs/testing/FINAL_FIX.md similarity index 100% rename from FINAL_FIX.md rename to project-docs/testing/FINAL_FIX.md diff --git a/FINAL_STATUS_AND_TESTING.md b/project-docs/testing/FINAL_STATUS_AND_TESTING.md similarity index 98% rename from FINAL_STATUS_AND_TESTING.md rename to project-docs/testing/FINAL_STATUS_AND_TESTING.md index 2f182df..82f6690 100644 --- a/FINAL_STATUS_AND_TESTING.md +++ b/project-docs/testing/FINAL_STATUS_AND_TESTING.md @@ -361,10 +361,10 @@ These don't affect the core demo. All critical slash commands work perfectly. 1. **Check logs** β€” Look for ERROR lines 2. **Restart server** β€” `Ctrl+C` then `go run ./cmd/api/main.go` -3. **Verify tokens** β€” Run `./test_slack_token.sh` +3. **Verify tokens** β€” Run `../../scripts/test/test_slack_token.sh` 4. **Check guides:** - - `SLACK_EVENT_SUBSCRIPTIONS_FIX.md` - - `WORKING_FEATURES_TEST.md` + - `../setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md` + - `./WORKING_FEATURES_TEST.md` **Last resort:** - Create GitHub issue diff --git a/WORKING_FEATURES_TEST.md b/project-docs/testing/WORKING_FEATURES_TEST.md similarity index 96% rename from WORKING_FEATURES_TEST.md rename to project-docs/testing/WORKING_FEATURES_TEST.md index 339becd..fe6f13f 100644 --- a/WORKING_FEATURES_TEST.md +++ b/project-docs/testing/WORKING_FEATURES_TEST.md @@ -220,9 +220,9 @@ When recording your demo video for the hackathon: ## Files Created for Debugging -1. `test_slack_token.sh` - Validate bot token -2. `SLACK_EVENT_SUBSCRIPTIONS_FIX.md` - Configuration guide -3. `watch_logs.sh` - Real-time log monitoring +1. `../../scripts/test/test_slack_token.sh` - Validate bot token +2. `../setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md` - Configuration guide +3. `../../scripts/dev/watch_logs.sh` - Real-time log monitoring 4. This file - Testing guide --- diff --git a/watch_logs.sh b/scripts/dev/watch_logs.sh similarity index 100% rename from watch_logs.sh rename to scripts/dev/watch_logs.sh diff --git a/SLACK_CLI_SETUP.sh b/scripts/setup/SLACK_CLI_SETUP.sh similarity index 100% rename from SLACK_CLI_SETUP.sh rename to scripts/setup/SLACK_CLI_SETUP.sh diff --git a/test_all_features.sh b/scripts/test/test_all_features.sh similarity index 92% rename from test_all_features.sh rename to scripts/test/test_all_features.sh index 8173f6d..ff23551 100755 --- a/test_all_features.sh +++ b/scripts/test/test_all_features.sh @@ -97,7 +97,7 @@ if [ $passed -eq $total ]; then echo "Your Signal bot is fully functional!" echo "" echo "Next steps:" - echo "1. Record demo video (see FINAL_STATUS_AND_TESTING.md)" + echo "1. Record demo video (see ../../project-docs/testing/FINAL_STATUS_AND_TESTING.md)" echo "2. Create architecture diagram" echo "3. Submit to Devpost" echo "" @@ -111,7 +111,7 @@ else echo "" echo "❌ CRITICAL ISSUES" echo "Please check server logs and review:" - echo " - FINAL_STATUS_AND_TESTING.md" - echo " - SLACK_EVENT_SUBSCRIPTIONS_FIX.md" + echo " - ../../project-docs/testing/FINAL_STATUS_AND_TESTING.md" + echo " - ../../project-docs/setup/SLACK_EVENT_SUBSCRIPTIONS_FIX.md" echo "" fi diff --git a/test_slack_token.sh b/scripts/test/test_slack_token.sh similarity index 100% rename from test_slack_token.sh rename to scripts/test/test_slack_token.sh