Schema Audit — Nxtgauge Database
Current State Overview
The Nxtgauge database contains 45+ tables spread across migrations and init-db.sql. Below is the complete audit.
1. Current Table Inventory
Identity & Access Control
| Table |
Status |
Notes |
users |
✅ Good |
Has email, phone, password_hash, status, timestamps |
refresh_tokens |
✅ Good |
Token storage for auth |
roles |
✅ Good |
Role definitions |
role_permissions |
✅ Good |
Permission assignments |
user_roles |
✅ Good |
User-role associations |
employees |
✅ Good |
Internal staff records |
departments |
✅ Good |
Organization structure |
designations |
✅ Good |
Job titles |
user_settings |
✅ Added |
User preferences |
account_deletion_requests |
✅ Added |
Deletion tracking |
User Profiles — DUPLICATED STRUCTURE (PROBLEM)
| Table |
Status |
Issue |
photographer_profiles |
⚠️ |
Has duplicated common fields |
tutor_profiles |
⚠️ |
Has duplicated common fields |
makeup_artist_profiles |
⚠️ |
Has duplicated common fields |
developer_profiles |
⚠️ |
Has external links (github_url, portfolio_url) |
video_editor_profiles |
⚠️ |
Has external links (reel_url) |
graphic_designer_profiles |
⚠️ |
Has external links (portfolio_url) |
social_media_manager_profiles |
⚠️ |
Has duplicated common fields |
fitness_trainer_profiles |
⚠️ |
Has duplicated common fields |
catering_service_profiles |
⚠️ |
Has duplicated common fields |
ugc_content_creator_profiles |
⚠️ |
Has duplicated common fields |
company_profiles |
⚠️ |
Has duplicated fields |
customer_profiles |
⚠️ |
Has duplicated fields |
job_seeker_profiles |
⚠️ |
Has duplicated fields |
professionals |
❌ Deprecated |
Old root table, references user_id |
Portfolio Domain
| Table |
Status |
Issue |
portfolio_items |
⚠️ |
References professionals table, needs update |
portfolio_images |
✅ Good |
Simple image storage |
services |
⚠️ |
References professionals table, needs update |
Marketplace
| Table |
Status |
Notes |
jobs |
✅ Good |
Job postings |
applications |
⚠️ |
Should be renamed to job_applications |
requirements |
⚠️ |
Should be renamed to leads |
lead_requests |
⚠️ |
References professionals table |
reviews |
✅ Good |
Reviews system |
Verification & Approval (Mixed with Onboarding)
| Table |
Status |
Issue |
onboarding_submissions |
❌ Legacy |
Tied to onboarding flow |
submission_documents |
❌ Legacy |
Tied to onboarding |
onboarding_states |
❌ Legacy |
Tied to onboarding |
onboarding_configs |
❌ Legacy |
Tied to onboarding |
verifications |
⚠️ |
Basic verification table |
verification_logs |
⚠️ |
Basic verification logs |
Finance Domain
| Table |
Status |
Notes |
tracecoin_wallets |
✅ Good |
Wallet per user |
tracecoin_ledger |
✅ Good |
Immutable ledger |
pricing_packages |
✅ Good |
Package definitions |
payments |
✅ Good |
Payment records |
invoices |
✅ Good |
Invoice records |
coupons |
✅ Good |
Coupon system |
coupon_uses |
⚠️ |
Should be coupon_redemptions |
discounts |
✅ Good |
Discount rules |
Communication & Support
| Table |
Status |
Notes |
notifications |
✅ Good |
In-app notifications |
email_logs |
✅ Good |
Email audit trail |
support_tickets |
✅ Good |
Support system |
support_ticket_messages |
✅ Good |
Ticket messages |
Knowledge Base
| Table |
Status |
Notes |
kb_categories |
✅ Good |
KB categories |
kb_articles |
⚠️ |
Missing section_id, kb_article_feedback |
Dashboard & Config
| Table |
Status |
Notes |
dashboard_configs |
✅ Good |
Dashboard configurations |
runtime_configs |
✅ Good |
Runtime feature flags |
Audit & Logging
| Table |
Status |
Issue |
activity_logs |
⚠️ |
Basic logging, incomplete |
audit_logs |
❌ Missing |
Not implemented |
audit_log_changes |
❌ Missing |
Not implemented |
2. Problems Identified
Problem 1: Duplicated Profile Fields
Every profile table has these duplicated fields:
display_name, bio, location, status, rejection_reason, approved_at
Impact: Data redundancy, inconsistent updates, maintenance burden.
Problem 2: Extension Tables Reference user_id Instead of Root Profile
Current: photographer_profiles.user_id → users.id
Target: photographer_profiles.user_role_profile_id → user_role_profiles.id
Impact: Cannot support multiple role profiles per user properly.
Problem 3: External Portfolio Links
Tables with forbidden external links:
developer_profiles: github_url, portfolio_url
video_editor_profiles: reel_url
graphic_designer_profiles: portfolio_url
Impact: Violates platform-native portfolio requirement.
Problem 4: Table Names Not Aligned with Target
| Current |
Target |
applications |
job_applications |
requirements |
leads |
coupon_uses |
coupon_redemptions |
Problem 5: Missing Root Profile Table
user_role_profiles does not exist. Users cannot have multiple role profiles properly.
Problem 6: Missing Audit Infrastructure
- No
audit_logs table
- No
audit_log_changes table
- Current
activity_logs is incomplete
Problem 7: Verification/Approval Tied to Onboarding
onboarding_submissions, onboarding_configs, onboarding_states are legacy
- Need separate
verification_requests, approval_requests
Problem 8: Incomplete Knowledge Base
- Missing
kb_sections
- Missing
kb_article_feedback
- Missing
kb_article_related
Problem 9: Missing Finance Tables
- No
orders / order_items
- No
tax_rules
- No
payment_transactions
- No
payment_gateway_configs
3. Page-Based Anti-Patterns
The schema was influenced by admin pages rather than domain entities:
| Page |
Problem Table(s) |
| Onboarding Management |
onboarding_submissions, onboarding_configs, onboarding_states |
| Account Settings |
Should be in user_settings |
| Reviews |
Mix of UI and domain |
4. Inconsistent Naming
| Issue |
Examples |
| Mixed naming |
job_type vs employment_type |
| Inconsistent timestamps |
Some tables have created_at, some don't have updated_at |
| UUID vs text |
Some IDs are UUID, some referenced tables use text |
5. Recommendations
- Create
user_role_profiles as the root profile table
- Update extension tables to reference
user_role_profile_id
- Remove external links from profile tables
- Rename tables to match target schema
- Create audit tables for compliance
- Separate verification from approval domains
- Add missing finance tables for proper order management
- Complete KB structure with sections and feedback