Overview
Dote Goat is a Slack bot designed to foster positive team culture through peer recognition. Team members can give recognition to colleagues for their contributions, achievements, and collaboration efforts. The bot tracks these recognitions and provides leaderboards to celebrate team accomplishments.
Built with React Router and TypeScript, Dote Goat provides a seamless integration with Slack workspaces while maintaining a robust backend for tracking and analytics.
Key Features
šÆ Peer Recognition System
Allow team members to recognize each other's contributions through simple Slack interactions, creating a culture of appreciation and positive feedback.

š Leaderboard & Analytics
Track recognition metrics with an interactive leaderboard accessible via the /leaderboard slash command, showing who's been recognized and for what.

š Custom Goat Emoji Detection
Automatically detects any Slack emoji containing the word "goat" for recognition interactions. Teams can create custom goat-themed emojis to personalize their recognition experience - currently supporting eleven unique custom goat emojis.
š Real-time Slack Integration
Seamless integration with Slack's event system, responding to mentions, direct messages, and slash commands in real-time.
š¾ Persistent Data Storage
PostgreSQL database with Prisma ORM ensures recognition data is safely stored and easily queryable for reports and analytics.
Meet the Goats
To add a personal touch and a bit of fun to the recognition process, we've created a set of custom goat emojis. Each one has its own personality, allowing team members to express their appreciation in a more creative way. Here are some of the friendly faces you'll see around the workspace.

Here's a list of the current goat emojis you can use:
- :goat:
- :tacogoat:
- :goatie:
- :robogoat:
- :bootiegoat:
- :creedgoat:
- :chickengoat:
- :kevgoat:
- :bingbonggoat:
- :evilchickengoat:
Architecture
The system is built with modern web technologies focusing on reliability and maintainability.
Frontend Framework
React Router with TypeScript for type-safe development and modern routing
Database Layer
PostgreSQL with Prisma ORM for robust data management and migrations
Styling System
TailwindCSS for rapid UI development and consistent design patterns
Development Tools
Hot module replacement, asset bundling, and optimization out of the box
Implementation Highlights
The bot implements several key patterns for reliable Slack integration and data management.
Event Processing Pipeline
The `/api/v1/goat` endpoint handles all incoming Slack events with proper validation and error handling. Events are processed asynchronously to ensure quick response times.
// Event types handled:
⢠app_mention - Direct mentions of the bot
⢠message.channels - Channel messages
⢠message.groups - Private group messages
⢠message.mpim - Multi-party direct messagesEmoji Recognition System
The bot intelligently detects any emoji containing "goat" in its name, making it extensible and fun for teams to customize their recognition experience.
// Pattern matching for goat emojis
// Examples: :party_goat:, :super_goat:, :goat_thumbs_up:
// Currently 11 unique custom goat emojis supported
// Teams can add new goat emojis anytimeSlash Command Integration
The `/leaderboard` command provides instant access to recognition statistics directly within Slack conversations.

// Endpoint: /api/v1/slash/leaderboard
// Provides formatted leaderboard data
// Supports different time periods and filtersSlack Integration Setup
Setting up Dote Goat requires configuring several Slack app components for full functionality.
Development Setup
Local development uses VS Code port forwarding to expose endpoints to Slack's servers, enabling real-time testing without deployment.
- ā PostgreSQL database for local data persistence
- ā Environment configuration for Slack credentials
- ā Database migrations with Prisma
- ā Hot reload for rapid development iterations