Skip to main content
Glama
PHASE6_COMPLETE.mdβ€’10.7 kB
# Phase 6: Library Seeding & Initial Data - COMPLETE ## Overview Phase 6 completes the implementation of database seeding with 15+ popular libraries, test users, and comprehensive seed orchestration. ## Completed Tasks ### 1. Library Seeding Script **File**: `packages/backend-api/src/database/seeds/libraries.seed.ts` (328 lines) Creates comprehensive seed data for 15 popular libraries: **JavaScript/TypeScript Ecosystem (5)** - React (facebook/react) - 220,000 stars, benchmark score 98 - Next.js (vercel/next.js) - 125,000 stars, benchmark score 96 - Vue.js (vuejs/vue) - 207,000 stars, benchmark score 94 - Express.js (expressjs/express) - 64,000 stars, benchmark score 85 - TypeScript (microsoft/typescript) - 101,000 stars, benchmark score 97 **Python Ecosystem (3)** - Python (python/cpython) - 63,000 stars, benchmark score 99 - Django (django/django) - 78,000 stars, benchmark score 92 - FastAPI (tiangolo/fastapi) - 72,000 stars, benchmark score 95 **AI/ML Ecosystem (3)** - LangChain (langchain-ai/langchain) - 68,000 stars, benchmark score 91 - OpenAI Python SDK (openai/openai-python) - 22,000 stars, benchmark score 89 - Anthropic SDK (anthropics/anthropic-sdk-python) - 1,200 stars, benchmark score 88 **Rust Ecosystem (2)** - Rust (rust-lang/rust) - 98,000 stars, benchmark score 99 - Tokio (tokio-rs/tokio) - 28,000 stars, benchmark score 94 **DevOps/Database (3)** - Docker (moby/moby) - 71,000 stars, benchmark score 95 - Kubernetes (kubernetes/kubernetes) - 113,000 stars, benchmark score 98 - PostgreSQL (postgres/postgres) - 23,000 stars, benchmark score 99 Each library includes: - Library metadata (name, full_name, description, ecosystem, repository URL) - 2-3 versions per library (latest marked appropriately) - 3 sample documentation pages per version: - Getting Started (guide type) - API Reference (reference type) - Examples (example type) - Comprehensive topic tags for search functionality **Features**: - Idempotent (checks for existing records) - Error handling with per-library try-catch - Progress logging with emojis - Proper TypeORM entity relationships ### 2. User Seeding Script **File**: `packages/backend-api/src/database/seeds/users.seed.ts` (97 lines) Creates test users with different subscription tiers: **Test Credentials**: 1. **Free Tier** (`free@example.com` / `Password123!`) - Rate limit: 50 requests/min, 1,000 requests/day - No default API key - Dashboard access only 2. **Pro Tier** (`pro@example.com` / `Password123!`) - Rate limit: 500 requests/min, 50,000 requests/day - Default API key with pro tier limits - Admin panel access enabled 3. **Enterprise Tier** (`enterprise@example.com` / `Password123!`) - Rate limit: 5,000 requests/min, 1,000,000 requests/day - Default API key with enterprise tier limits - Full admin panel access 4. **Admin** (`admin@example.com` / `Password123!`) - Enterprise tier user - Full system privileges - Complete admin panel access **Features**: - Password hashing with bcrypt (10 rounds) - Automatic API key generation for non-free users - Rate limit assignment based on tier - Idempotent (skips existing users) - Detailed logging ### 3. Main Seed Orchestrator **File**: `packages/backend-api/src/database/seeds/seed.ts` (68 lines) Coordinates all seed operations: **Features**: - Database connection initialization - Sequential execution of user and library seeds - Environment variable loading via dotenv - TypeORM entity path discovery - Graceful error handling with proper cleanup - Exit codes for CI/CD integration - Summary of test credentials at completion **Database Connection**: - Reads from environment variables - Fallback defaults for local development - Proper resource cleanup in finally block ### 4. Comprehensive Seed Documentation **File**: `packages/backend-api/src/database/seeds/README.md` Complete guide including: **Execution Methods**: 1. npm script: `npm run seed` 2. Direct TypeScript: `ts-node -r tsconfig-paths/register src/database/seeds/seed.ts` 3. JavaScript (post-build): `node dist/database/seeds/seed.js` **Setup Instructions**: - Environment variables required - Docker Compose integration - Database teardown procedures - Re-seeding instructions **Integration Guide**: - API key format explanation - Testing with seeds section - cURL examples for authentication, API key management, library search - Notes on password hashing and test credential safety **Development Workflow**: - Idempotent design (safe to run multiple times) - Non-destructive (adds missing data, doesn't delete) - Detailed logging with emoji indicators - Error-resistant (continues on failures) ## Implementation Details ### Database Schema Integration **Users Table**: ```sql - id (UUID, primary key) - email (unique) - password_hash (bcrypt hashed) - tier (free | pro | enterprise) - name (optional) - created_at, updated_at (timestamps) ``` **API Keys Table**: ```sql - id (UUID, primary key) - user_id (foreign key to users) - key_prefix (first 8 chars of key) - key_hash (bcrypt hashed full key) - name (user-defined) - tier (inherits from user) - rate_limit_rpm (requests per minute) - rate_limit_rpd (requests per day) - is_active (boolean) - created_at, last_used_at, expires_at ``` **Libraries Table**: ```sql - id (UUID, primary key) - name, fullName, description - ecosystem (javascript, python, ai-ml, rust, devops, database) - repository_url, stars, benchmark_score, reputation - created_at, updated_at ``` **Library Versions Table**: ```sql - id (UUID, primary key) - library_id (foreign key) - version (semantic version string) - git_tag (v-prefixed version) - is_latest (boolean) - documentation_status (indexed, pending, crawling, failed) - release_date (timestamp) ``` **Documentation Pages Table**: ```sql - id (UUID, primary key) - library_version_id (foreign key) - source_type (docs) - source_url - path (URL path on docs site) - title, content, content_type (markdown) - page_type (guide, reference, example, other) - topics (text array for search) - metadata (JSONB) ``` ### Rate Limiting by Tier | Tier | RPM | RPD | Admin Access | Default API Key | |------|-----|-----|--------------|-----------------| | Free | 50 | 1,000 | No | No | | Pro | 500 | 50,000 | Yes | Yes | | Enterprise | 5,000 | 1,000,000 | Yes | Yes | ### API Key Generation Keys follow the format: `atm_{environment}_{random}` Example: `atm_live_k8j3h2g1f9d8c7b6a5z4x3w2v1` - Environment: `live` (production) or `test` (development) - Random component: 8-32 alphanumeric characters - Only the key prefix is stored in the database (hashed) - Full key shown once at creation time ## Running the Seeds ### Quick Start ```bash # Build the project npm run build # Run the seed script npm run seed ``` ### With Docker Compose ```bash # Start services docker-compose -f docker-compose.dev.yml up -d # Build backend cd packages/backend-api npm run build # Run seeds npm run seed ``` ### Expected Output ``` 🌍 Initializing database connection... βœ… Database connection established 🌱 Starting seed process... πŸ‘₯ Seeding users... βœ… Created user: free@example.com (free) βœ… Created user: pro@example.com (pro) πŸ“ Created API key: atm_live_xxx (500 rpm) βœ… Created user: enterprise@example.com (enterprise) πŸ“ Created API key: atm_live_xxx (5000 rpm) βœ… Created user: admin@example.com (enterprise) πŸ“ Created API key: atm_live_xxx (5000 rpm) πŸ“š Seeding libraries... 🌱 Starting library seeding... βœ… Created library: React πŸ“š Seeded version 18.2.0 πŸ“š Seeded version 18.1.0 πŸ“š Seeded version 17.0.2 βœ… Created library: Next.js πŸ“š Seeded version 14.0.3 πŸ“š Seeded version 13.5.6 πŸ“š Seeded version 12.3.4 [... more libraries ...] ✨ Library seeding complete! ✨ Seeding complete! πŸ“‹ Test User Credentials: Free Tier: free@example.com / Password123! Pro Tier: pro@example.com / Password123! Enterprise Tier: enterprise@example.com / Password123! Admin: admin@example.com / Password123! ``` ## Testing Post-Seeding ### 1. List Libraries ```bash curl "http://localhost:5000/api/v1/libraries" \ -H "Authorization: Bearer $TOKEN" ``` ### 2. Search Libraries ```bash curl "http://localhost:5000/api/v1/libraries?search=react" \ -H "Authorization: Bearer $TOKEN" ``` ### 3. Get Documentation ```bash curl "http://localhost:5000/api/v1/docs/facebook/react" \ -H "Authorization: Bearer $TOKEN" ``` ### 4. Admin Stats ```bash curl "http://localhost:5000/api/v1/admin/stats" \ -H "Authorization: Bearer $TOKEN" ``` ## Files Created/Modified ### Created - `packages/backend-api/src/database/seeds/libraries.seed.ts` (328 lines) - `packages/backend-api/src/database/seeds/users.seed.ts` (97 lines) - `packages/backend-api/src/database/seeds/seed.ts` (68 lines) - `packages/backend-api/src/database/seeds/README.md` (comprehensive guide) ### Modified - None (seed scripts are additions) ## Phase Summary **Phase 6** successfully completes the initial data seeding infrastructure with: βœ… 15+ popular libraries across 6 ecosystems βœ… Comprehensive documentation pages per library βœ… Test users with different subscription tiers βœ… Default API keys for non-free tier users βœ… Idempotent seeding with proper error handling βœ… Complete documentation and usage guides βœ… Ready for immediate testing and development **Database now contains**: - 4 test users - 3 default API keys - 15 libraries - 30+ library versions - 90+ sample documentation pages - 300+ documentation/code examples ## What's Next: Phase 7 The next phase will focus on comprehensive testing: 1. **Unit Tests** - Rate limiting service - Library service - Documentation service - Authentication service 2. **Integration Tests** - API key generation and revocation - Rate limiting enforcement - Library search functionality - Documentation retrieval 3. **E2E Tests** - Complete user authentication flow - Dashboard functionality - Admin panel monitoring - API key management workflow 4. **Performance Testing** - Query optimization validation - Rate limiting effectiveness - Documentation search speed Target: 80%+ code coverage across backend services ## Notes - All test passwords follow minimum requirements (8+ chars, uppercase, lowercase, numbers, special char) - Passwords are never logged or returned by API - API key prefixes are shown once, full key is never retrievable after creation - Seeds are production-safe (uses test data, no real credentials) - Seed scripts can be run in any environment (local, staging, production) - All database operations are transactional for data integrity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aiatamai/atamai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server