Engineering Documentation Structure Guide
Engineering Documentation Structure Guide
Table of Contents
- Three-Layer Documentation Model
- Layer 1: Google Drive Structure
- Layer 2: Fumadocs Structure
- Layer 3: Repository Documentation
- Learning & Research Framework
- Architecture Decision Process
- Decision Tree: Where Does This Go?
- Maintenance & Ownership
Three-Layer Documentation Model
Layer 1: Google Drive - Official Records
Purpose: Legal compliance, HR, performance management
Characteristics: Formal, version-controlled, access-restricted
Update Frequency: Quarterly or as needed
Examples: Performance reviews, signed policies, promotion packets
Layer 2: Fumadocs - Engineering Portal
Purpose: Discoverability, standards, cross-cutting knowledge
Characteristics: Curated, high-level, interconnected
Update Frequency: Monthly or when processes change
Examples: Onboarding guides, coding standards, system architecture
Layer 3: Repositories - Living Implementation
Purpose: Build, test, deploy specific systems
Characteristics: Detailed, technical, continuously updated
Update Frequency: With every significant code change
Examples: Setup instructions, API docs, BDD feature files
Layer 1: Google Drive Structure
Design Principles
- Flat over nested: Maximum 3 levels of folders
- Date-prefixed for chronological: Use
YYYY-MM-DD-for dated documents - Role-based access: Control at folder level
- Templates separate from work: Clear separation
Folder Structure
📁 Engineering/
│
├── 📁 _Templates/ ⭐ (All templates in ONE place)
│ ├── 📄 Performance-Review-Template.gdoc
│ ├── 📄 Individual-Learning-Plan-Template.gdoc
│ ├── 📄 Learning-Log-Template.gsheet ⭐ NEW
│ ├── 📄 1on1-Notes-Template.gdoc
│ ├── 📄 Promotion-Packet-Template.gdoc
│ ├── 📄 Incident-Report-Template.gdoc
│ ├── 📄 Post-Mortem-Template.gdoc
│ ├── 📄 Onboarding-Checklist-Template.gdoc
│ ├── 📄 Purchase-Request-Template.gdoc
│ └── 📄 _README.gdoc (How to use templates)
│
├── 📁 Official-Policies/ (Signed, versioned)
│ ├── 📄 2026-01-Engineering-Performance-Framework-SIGNED.pdf
│ ├── 📄 2026-01-Engineering-Career-Ladder-SIGNED.pdf
│ ├── 📄 2025-Engineering-Strategy-Vision.pdf
│ ├── 📄 Code-of-Conduct.pdf
│ ├── 📄 IP-and-Confidentiality-Agreement.pdf
│ └── 📁 Archive/
│ └── 📄 2025-01-Performance-Framework-SIGNED.pdf
│
├── 📁 People/ (Performance & career)
│ ├── 📁 Performance-Reviews/
│ │ ├── 📁 2026-H1/ (Half-yearly folders)
│ │ │ ├── 📄 2026-06-30-John-Doe-Review.gdoc
│ │ │ ├── 📄 2026-06-30-Jane-Smith-Review.gdoc
│ │ │ └── 📊 2026-H1-Calibration-Data.gsheet
│ │ └── 📁 2025-H2/
│ │
│ ├── 📁 Learning-Plans/ ⭐ (Track individual growth)
│ │ └── 📁 2026/
│ │ ├── 📄 2026-Q1-John-Doe-ILP.gdoc
│ │ ├── 📊 2026-John-Doe-Learning-Log.gsheet ⭐
│ │ ├── 📄 2026-Q1-Jane-Smith-ILP.gdoc
│ │ └── 📊 2026-Jane-Smith-Learning-Log.gsheet ⭐
│ │
│ ├── 📁 Promotions/
│ │ └── 📁 2026/
│ │ └── 📄 2026-03-John-Doe-Senior-Promotion.gdoc
│ │
│ ├── 📁 1on1-Notes/ (By manager, then direct report)
│ │ └── 📁 Sarah-Manager/
│ │ ├── 📁 John-Doe/
│ │ │ ├── 📄 2026-01-15.gdoc
│ │ │ └── 📄 2026-01-29.gdoc
│ │ └── 📁 Jane-Smith/
│ │
│ └── 📁 Performance-Improvement-Plans/
│ ├── 📁 Active/
│ └── 📁 Closed/
│
├── 📁 Onboarding/ (New hire tracking)
│ └── 📁 2026/
│ ├── 📄 2026-01-15-John-Doe-Onboarding.gdoc
│ └── 📄 2026-02-01-Jane-Smith-Onboarding.gdoc
│
├── 📁 Compliance/ (Audit evidence)
│ ├── 📁 SOC2-2026/
│ │ ├── 📊 Control-Evidence-Tracker.gsheet
│ │ ├── 📄 CC6.1-Access-Control-Evidence.gdoc
│ │ └── 📄 CC8.1-Change-Management-Evidence.gdoc
│ └── 📁 GDPR/
│ └── 📊 Data-Processing-Inventory.gsheet
│
├── 📁 Incidents/ (Major incidents only)
│ └── 📁 2026/
│ ├── 📄 2026-01-15-INC001-Payment-Outage.gdoc
│ └── 📄 2026-02-03-INC002-Database-Performance.gdoc
│
├── 📁 Budget/
│ ├── 📊 2026-Engineering-Budget.gsheet
│ ├── 📊 Learning-Development-Budget.gsheet ⭐ NEW
│ │ (Columns: Person | Request Date | Item/Course | Cost | Manager Approval | Status | Receipt)
│ ├── 📊 Tool-Licenses-Inventory.gsheet
│ └── 📁 Purchase-Requests/
│ └── 📄 2026-01-PR001-IDE-Licenses.gdoc
│
├── 📁 Hiring/
│ ├── 📁 Job-Descriptions/ (Living, not dated)
│ │ ├── 📄 Senior-Mobile-Engineer-JD.gdoc
│ │ └── 📄 Mid-Backend-Engineer-JD.gdoc
│ ├── 📊 2026-Candidate-Pipeline.gsheet
│ └── 📁 Offer-Letters/
│ └── 📁 2026/
│
├── 📁 Meeting-Notes/ (Official meeting records)
│ ├── 📁 All-Hands/
│ │ ├── 📄 2026-01-All-Hands.gdoc
│ │ └── 📄 2026-02-All-Hands.gdoc
│ ├── 📁 Leadership-Sync/
│ │ └── 📄 2026-Leadership-Weekly-Notes.gdoc
│ ├── 📁 Architecture-Guild/ ⭐
│ │ └── 📄 2026-Architecture-Guild-Notes.gdoc
│ ├── 📁 Show-and-Tell/ ⭐ NEW
│ │ ├── 📊 2026-Show-and-Tell-Log.gsheet
│ │ │ (Columns: Date | Presenter | Topic | Recording Link | Attendees)
│ │ └── 📁 Recordings/ (or links to video storage)
│ └── 📁 Tech-Talks/ ⭐ NEW
│ ├── 📊 2026-Tech-Talks-Schedule.gsheet
│ │ (Columns: Date | Speaker | Topic | Recording Link | Slides Link | Attendees)
│ └── 📁 Slides/
│
└── 📁 Reports/ (Quarterly business reports)
└── 📁 2026/
├── 📄 2026-Q1-Engineering-Report.gdoc
└── 📊 2026-Q1-Engineering-Metrics.gsheetLearning Log Template (Google Sheets)
Columns:
| Date | Topic | Type | Hours | Key Takeaways | Applied to Work? | Status |
|---|---|---|---|---|---|---|
| 2026-01-15 | Flutter Animations | Tutorial | 4 | Learned implicit animations | PR-#234 | Complete |
| 2026-01-18 | DDD Patterns | Book | 6 | Value objects pattern | RFC-M-003 | In Progress |
| 2026-01-22 | GraphQL Basics | Course | 8 | Schema design principles | - | Complete |
Types: Book, Course, Tutorial, Experimentation, Conference, Spike, RFC Research
What Belongs in Google Drive
✅ MUST be in Google Drive:
- Signed official policies
- Official Career Ladder document (PDF) ⭐
- Official Performance Framework document (PDF) ⭐
- Performance reviews and calibration data
- Individual Learning Plans
- Individual Learning Logs (tracking personal growth) ⭐
- 1:1 meeting notes
- Promotion packets
- Compliance evidence (SOC2, GDPR)
- Budget and financial planning
- Learning & development budget tracking (actual requests/approvals) ⭐
- Hiring pipelines and offer letters
- Major incident post-mortems (not minor bugs)
- All meeting notes and records:
- Leadership meeting notes
- Architecture Guild meeting notes
- Show & Tell logs and recordings ⭐
- Tech Talk schedules and recordings ⭐
- All-hands notes
- Quarterly business reports
- All templates (_Templates/ folder)
❌ Must NOT be in Google Drive:
- Technical documentation
- Code examples or snippets
- API documentation
- System architecture diagrams (unless official signed versions)
- Process documentation (HOW to do things) ⭐
- Team processes (sprint workflows, code review)
- How to understand performance reviews (that's Fumadocs)
- How promotions work (that's Fumadocs)
- How Show & Tell works (that's Fumadocs) ⭐
- How to request learning budget (that's Fumadocs) ⭐
- How to write RFCs/ADRs (that's Fumadocs) ⭐
- RFCs (Request for Comments) (that's Fumadocs)
- ADRs (Architecture Decision Records) (that's Fumadocs or Repos)
- Onboarding technical guides
- Daily operational notes
Naming Conventions
| Document Type | Format | Example |
|---|---|---|
| Dated documents | YYYY-MM-DD-Description | 2026-01-15-John-Doe-Review.gdoc |
| Templates | Description-Template | Performance-Review-Template.gdoc |
| Official policies | YYYY-MM-PolicyName-SIGNED | 2026-01-Career-Ladder-SIGNED.pdf |
| Versioned docs | YYYY-QX-Description | 2026-Q1-Engineering-Report.gdoc |
| Learning logs | YYYY-Name-Learning-Log | 2026-John-Doe-Learning-Log.gsheet |
Access Control Strategy
| Folder | Who Has Access | Why |
|---|---|---|
_Templates/ | All engineers | Everyone needs templates |
Official-Policies/ | All engineers | Transparency |
People/Performance-Reviews/ | Manager + HR + Individual | Privacy |
People/Learning-Plans/ | Manager + Individual | Privacy |
People/1on1-Notes/ | Manager + Direct Report | Privacy |
Compliance/ | Security + Leadership + Auditors | Compliance |
Budget/ | Leadership + Finance | Confidential |
Budget/Learning-Development-Budget/ | Manager + Finance (view all) | Tracking |
Hiring/ | Hiring Managers + Recruiters | Confidential |
Meeting-Notes/Architecture-Guild/ | All engineers | Transparency |
Meeting-Notes/Show-and-Tell/ | All engineers | Knowledge sharing |
Meeting-Notes/Tech-Talks/ | All engineers | Knowledge sharing |
Layer 2: Fumadocs Structure
Design Principles
- Curated over comprehensive: Link to repos, don't duplicate
- High-level over detailed: Explain "why" and "what", not "how" (that's in repos)
- Cross-cutting over team-specific: If only one team needs it, it goes in their repo
- Stable over changing: Document things that change quarterly, not daily
Folder Structure
📁 docs/ (fumadocs root)
│
├── 📄 index.mdx (Welcome to Engineering @ Solutech)
│
├── 📁 getting-started/
│ ├── 📄 index.mdx (Your First Week)
│ ├── 📄 engineering-handbook.mdx (Company culture, values, how we work)
│ ├── 📄 team-structure.mdx (Org chart, team missions)
│ ├── 📄 tools-and-access.mdx (How to request access to tools)
│ ├── 📄 communication-norms.mdx (Slack, meetings, email)
│ └── 📄 first-contribution.mdx (How to make your first PR)
│
├── 📁 how-we-work/
│ ├── 📄 index.mdx (Engineering Processes Overview)
│ ├── 📄 sprint-process.mdx (2-week sprints, ceremonies)
│ ├── 📄 task-workflow.mdx (Jira workflow: New → In Progress → Done)
│ ├── 📄 code-review-process.mdx (PR guidelines, approval rules)
│ ├── 📄 git-workflow.mdx (Branching strategy, commit messages)
│ ├── 📄 deployment-process.mdx (How code gets to production)
│ ├── 📄 incident-response.mdx (On-call, escalation)
│ ├── 📄 three-amigos.mdx (Product + Dev + QA collaboration)
│ │
│ ├── 📁 bdd/
│ │ ├── 📄 index.mdx (BDD Overview - why we use it)
│ │ ├── 📄 bdd-workflow.mdx (The BDD process: 3 Amigos → Gherkin → Implementation)
│ │ ├── 📄 writing-scenarios.mdx ⭐ (How to write good Gherkin scenarios)
│ │ ├── 📄 feature-structure.mdx ⭐ (How to organize feature files by modules)
│ │ ├── 📄 step-definitions.mdx (How to write reusable step definitions)
│ │ ├── 📄 test-data-management.mdx (Managing test data in BDD)
│ │ ├── 📄 running-bdd-tests.mdx (How to run BDD tests locally and in CI)
│ │ └── 📄 bdd-best-practices.mdx (Common pitfalls and how to avoid them)
│ │
│ ├── 📁 learning-and-research/ ⭐ NEW
│ │ ├── 📄 index.mdx (Overview: Learning vs Research)
│ │ ├── 📄 personal-learning.mdx (How to track and grow your skills)
│ │ ├── 📄 knowledge-sharing.mdx ⭐ (HOW Show & Tell works, WHEN, FORMAT - not actual logs)
│ │ ├── 📄 tech-talks.mdx ⭐ (HOW to propose/deliver talks, PROCESS - not schedule)
│ │ ├── 📄 spike-process.mdx (When and how to spike)
│ │ ├── 📄 preventing-duplicate-research.mdx (Communication strategies)
│ │ └── 📄 learning-budget.mdx ⭐ (HOW to request budget, WHAT it covers - not tracking)
│ │
│ └── 📁 architecture-decisions/ ⭐ NEW
│ ├── 📄 index.mdx (Overview: RFC → ADR process)
│ ├── 📄 rfc-process.mdx (Request for Comments workflow)
│ ├── 📄 adr-process.mdx (Architecture Decision Records)
│ ├── 📄 research-guidelines.mdx (How to conduct technical research)
│ ├── 📄 spike-vs-rfc.mdx (When to spike vs when to RFC)
│ └── 📄 decision-levels.mdx (Company vs Platform vs Application)
│
├── 📁 standards/
│ ├── 📄 index.mdx (Standards Overview)
│ ├── 📄 coding-standards.mdx (General principles: DRY, SOLID, naming)
│ ├── 📄 api-design.mdx (RESTful conventions, versioning)
│ ├── 📄 database-standards.mdx (Naming, migrations, indexes)
│ ├── 📄 testing-standards.mdx (Unit, integration, E2E coverage)
│ ├── 📄 security-standards.mdx (OWASP, secrets management)
│ ├── 📄 documentation-standards.mdx (When/how to document)
│ ├── 📄 accessibility.mdx (WCAG compliance)
│ │
│ └── 📁 architecture-patterns/
│ ├── 📄 index.mdx (Architecture Standards Overview)
│ ├── 📄 mobile-architecture.mdx ⭐ (Standard Flutter architecture for ALL mobile apps)
│ ├── 📄 backend-architecture.mdx ⭐ (Standard Laravel architecture for ALL backends)
│ ├── 📄 web-architecture.mdx ⭐ (Standard Vue/Nuxt architecture for ALL web apps)
│ └── 📄 architectural-exceptions.mdx (When/how to deviate from standards)
│
├── 📁 architecture/
│ ├── 📄 index.mdx (System Architecture Overview)
│ ├── 📄 technology-radar.mdx (Adopt, Trial, Assess, Hold)
│ ├── 📄 design-patterns.mdx (Common patterns we use)
│ ├── 📄 integration-patterns.mdx (How systems talk to each other)
│ │
│ ├── 📁 rfcs/ ⭐ NEW (Request for Comments - Research phase)
│ │ ├── 📄 index.mdx (Active RFC Registry - auto-updated)
│ │ ├── 📄 template.mdx (RFC template)
│ │ │
│ │ ├── 📁 open/ (Currently researching)
│ │ │ ├── 📄 001-evaluating-monitoring-solutions.mdx
│ │ │ ├── 📄 002-event-streaming-comparison.mdx
│ │ │ └── 📄 003-api-gateway-options.mdx
│ │ │
│ │ └── 📁 resolved/ (Became ADRs or were rejected)
│ │ ├── 📄 001-evaluating-state-management.mdx → ADR-005
│ │ └── 📄 002-database-replication-strategy.mdx (Rejected)
│ │
│ ├── 📁 decisions/ (Architecture Decision Records - Company-wide Level 1)
│ │ ├── 📄 index.mdx (All ADRs index)
│ │ ├── 📄 template.mdx (ADR template)
│ │ ├── 📄 001-chose-laravel.mdx
│ │ ├── 📄 002-chose-flutter.mdx
│ │ ├── 📄 003-microservices-strategy.mdx
│ │ └── 📄 004-event-driven-architecture.mdx
│ │
│ ├── 📁 mobile/ ⭐ (Platform-specific Level 2)
│ │ ├── 📄 index.mdx (Mobile Architecture Overview)
│ │ ├── 📄 flutter-standard.mdx (Standard architecture for ALL Flutter apps)
│ │ │
│ │ ├── 📁 rfcs/ ⭐ NEW
│ │ │ ├── 📁 open/
│ │ │ │ └── 📄 M-003-offline-sync-strategies.mdx
│ │ │ └── 📁 resolved/
│ │ │
│ │ └── 📁 decisions/ (Platform-wide mobile ADRs - Level 2)
│ │ ├── 📄 M-001-bloc-over-riverpod.mdx
│ │ ├── 📄 M-002-drift-for-local-storage.mdx
│ │ └── 📄 M-003-firebase-push-notifications.mdx
│ │
│ ├── 📁 backend/ ⭐ (Platform-specific Level 2)
│ │ ├── 📄 index.mdx (Backend Architecture Overview)
│ │ ├── 📄 laravel-standard.mdx (Standard architecture for ALL Laravel apps)
│ │ │
│ │ ├── 📁 rfcs/ ⭐ NEW
│ │ │ ├── 📁 open/
│ │ │ │ └── 📄 B-004-rate-limiting-implementation.mdx
│ │ │ └── 📁 resolved/
│ │ │
│ │ └── 📁 decisions/ (Platform-wide backend ADRs - Level 2)
│ │ ├── 📄 B-001-repository-pattern-mandatory.mdx
│ │ ├── 📄 B-002-api-versioning-strategy.mdx
│ │ └── 📄 B-003-redis-for-caching.mdx
│ │
│ └── 📁 web/ ⭐ (Platform-specific Level 2)
│ ├── 📄 index.mdx (Web Architecture Overview)
│ ├── 📄 vue-standard.mdx (Standard architecture for ALL Vue apps)
│ │
│ ├── 📁 rfcs/ ⭐ NEW
│ │ ├── 📁 open/
│ │ └── 📁 resolved/
│ │
│ └── 📁 decisions/ (Platform-wide web ADRs - Level 2)
│ ├── 📄 W-001-composition-api-mandatory.mdx
│ ├── 📄 W-002-pinia-over-vuex.mdx
│ └── 📄 W-003-playwright-for-e2e.mdx
│
├── 📁 applications/
│ ├── 📄 index.mdx (All Applications Overview)
│ │
│ └── 📁 solutech-sat/
│ ├── 📄 index.mdx (What is SAT? Product overview, user personas)
│ ├── 📄 architecture.mdx (High-level: Mobile + Backend + Web, data flow)
│ ├── 📄 getting-started.mdx (Which repos to clone, quick start)
│ │
│ ├── 📁 mobile/
│ │ ├── 📄 index.mdx (Overview + link to repo)
│ │ └── 📄 repo-link.mdx (👉 Detailed docs in solutech-sat-mobile/docs)
│ │
│ ├── 📁 backend/
│ │ ├── 📄 index.mdx (Overview + link to repo)
│ │ └── 📄 repo-link.mdx (👉 Detailed docs in solutech-sat-backend/docs)
│ │
│ ├── 📁 web/
│ │ ├── 📄 index.mdx (Overview + link to repo)
│ │ └── 📄 repo-link.mdx (👉 Detailed docs in solutech-sat-web/docs)
│ │
│ └── 📄 operations.mdx (Where to check logs, monitoring dashboards)
│
├── 📁 teams/
│ ├── 📄 index.mdx (Engineering Teams)
│ ├── 📄 mobile.mdx (Mission, members, tech stack)
│ ├── 📄 backend.mdx
│ ├── 📄 qa.mdx
│ ├── 📄 security.mdx
│ ├── 📄 data.mdx
│ └── 📄 design.mdx
│
├── 📁 infrastructure/
│ ├── 📄 index.mdx (Infrastructure Overview)
│ ├── 📄 environments.mdx (Dev, Staging, Production)
│ ├── 📄 ci-cd.mdx (GitHub Actions, deployment pipeline)
│ ├── 📄 monitoring.mdx (Where to check metrics)
│ └── 📄 incident-runbooks.mdx (Common issues, how to resolve)
│
├── 📁 career/
│ ├── 📄 index.mdx (Career Development)
│ ├── 📄 career-ladder.mdx (Link to official Google Drive PDF)
│ ├── 📄 performance-framework.mdx (How performance is measured)
│ ├── 📄 promotion-process.mdx (How to get promoted)
│ ├── 📄 mentorship.mdx (How mentorship works)
│ └── 📄 learning-resources.mdx ⭐ (Books, courses, conferences)
│
└── 📁 reference/
├── 📄 glossary.mdx (Terms, acronyms)
├── 📄 jira-workflow.mdx (Status definitions)
└── 📄 useful-links.mdx (Google Drive, GitHub, Jira, etc.)What Belongs in Fumadocs
✅ MUST be in Fumadocs:
- Onboarding guides (first week, first month)
- Company culture and values
- Cross-team processes (sprint, code review, deployment)
- Learning & Research Framework ⭐
- How to track personal learning (PROCESS, not actual logs)
- Show & Tell process (HOW it works, WHEN, FORMAT) ⭐
- Tech Talks process (HOW to propose/deliver) ⭐
- Knowledge sharing best practices
- Spike process guidelines
- Learning budget process (HOW to request, WHAT qualifies) ⭐
- RFC Process & Active RFCs ⭐
- RFC workflow and templates
- Active RFC registry (auto-updated)
- Research guidelines
- How to prevent duplicate research
- BDD process and guidelines ⭐
- BDD workflow and Three Amigos process
- How to write good Gherkin scenarios
- Feature file organization standards
- Step definition best practices
- Test data management
- BDD best practices and anti-patterns
- Platform-specific standard architectures ⭐
- Mobile:
/architecture/mobile/flutter-standard.mdx - Backend:
/architecture/backend/laravel-standard.mdx - Web:
/architecture/web/vue-standard.mdx
- Mobile:
- Company-wide architectural decisions ⭐
- ADRs in
/architecture/decisions/(Level 1) - Platform ADRs in
/architecture/<platform>/decisions/(Level 2)
- ADRs in
- Engineering standards (coding, API, testing)
- System-level architecture (how all systems connect)
- Links to repository documentation
- Career guidance and interpretation ⭐
- How to understand your performance reviews
- How the 5 KPIs work (with examples)
- How to prepare for promotion
- How to grow your career at Solutech
- Links to official documents in Google Drive
- Tool inventory and access guides
❌ Must NOT be in Fumadocs:
- Detailed setup instructions (that's in repos)
- Code examples or implementation details
- Actual BDD feature files (that's in repos)
- Actual step definitions (that's in repos)
- Application-specific RFCs (that's in repos)
- Application-specific ADRs (that's in repos - Level 3)
- API endpoint documentation (that's in repos)
- Official career ladder/performance framework PDFs (that's in Google Drive)
- Actual performance reviews (that's in Google Drive)
- Actual promotion packets (that's in Google Drive)
- Personal learning logs (that's in Google Drive)
- Learning budget tracking (actual requests/approvals) (that's in Google Drive) ⭐
- Show & Tell logs and recordings (that's in Google Drive) ⭐
- Tech Talk schedules and recordings (that's in Google Drive) ⭐
- Meeting notes (Architecture Guild, Leadership, etc.) (that's in Google Drive) ⭐
- Performance review documents (that's in Google Drive)
- Meeting notes (that's in Google Drive)
Content Guidelines
| Section | Purpose | Link Strategy |
|---|---|---|
getting-started/ | Onboard new engineers | Self-contained + links to repos |
how-we-work/ | Company-wide processes | Self-contained |
how-we-work/learning-and-research/ | Learning & knowledge sharing PROCESS | Self-contained + links to Google Drive logs |
how-we-work/architecture-decisions/ | RFC & ADR processes | Self-contained + templates |
standards/ | Cross-cutting standards | Self-contained |
architecture/ | System design decisions | Self-contained + diagrams |
architecture/rfcs/ | Active research | Updated weekly, links to resolved |
applications/ | Product overviews | High-level + heavy linking to repos |
teams/ | Team missions | Brief + links to repos for details |
career/ | Career guidance | Link to official Google Drive docs |
Layer 3: Repository Documentation
Design Principles
- Mandatory minimum: Every repo MUST have README, CONTRIBUTING, ARCHITECTURE
- Living alongside code: Docs change with code
- Implementation-focused: How to build, test, deploy THIS app
- Self-contained: Developers shouldn't need to leave the repo
Standard Repository Structure
📁 solutech-sat-mobile/ (or any application repo)
│
├── 📄 README.md ⭐ MANDATORY
│
├── 📄 CONTRIBUTING.md ⭐ MANDATORY
│
├── 📄 CHANGELOG.md ⭐ MANDATORY
│
├── 📁 docs/ ⭐ MANDATORY
│ ├── 📄 architecture.md ⭐ MANDATORY
│ ├── 📄 setup.md ⭐ MANDATORY
│ ├── 📄 development.md ⭐ MANDATORY
│ ├── 📄 testing.md ⭐ MANDATORY
│ ├── 📄 deployment.md (If team deploys)
│ ├── 📄 api.md (For backend services)
│ ├── 📄 troubleshooting.md
│ │
│ ├── 📁 rfcs/ ⭐ NEW (Application-specific research - Level 3)
│ │ ├── 📄 README.md (How to use RFCs in this repo)
│ │ ├── 📁 open/ (Currently researching)
│ │ │ └── 📄 001-evaluating-offline-sync.md
│ │ └── 📁 resolved/ (Became ADRs or were rejected)
│ │ └── 📄 001-offline-sync-decision.md → ADR-002
│ │
│ └── 📁 adrs/ (Application-specific decisions ONLY - Level 3)
│ ├── 📄 README.md (How to write ADRs)
│ ├── 📄 template.md
│ ├── 📄 001-why-we-need-custom-cache.md
│ ├── 📄 002-offline-sync-strategy.md
│ └── 📄 003-push-notification-provider.md
│
├── 📁 features/ ⭐ MANDATORY (BDD Gherkin behaviour specifications)
│ ├── 📄 authentication.feature
│ ├── 📄 order-management.feature
│ ├── 📄 customer-management.feature
│ └── 📄 offline-sync.feature
│
├── 📁 test/
│ ├── 📁 unit/
│ ├── 📁 integration/
│ └── 📁 e2e/
│
└── 📁 .github/
└── 📁 workflows/
├── 📄 ci.yml
└── 📄 bdd-report.ymlMandatory Repository Documentation
Every repository MUST have:
- README.md - Quick start and overview
- CONTRIBUTING.md - How to contribute
- CHANGELOG.md - Version history
- docs/architecture.md - System design (references platform standard + app-specific decisions)
- docs/setup.md - Environment setup
- docs/development.md - Development workflow
- docs/testing.md - Testing guide
- docs/rfcs/ - Application-specific research ⭐
- docs/adrs/ - Application-specific decisions ⭐
Learning & Research Framework
The Spectrum of Knowledge Work
Personal Learning → Team Sharing → Spike → RFC → ADR
↓ ↓ ↓ ↓ ↓
No docs Slack/Demo Branch Formal Decision1. Personal Learning (Individual Growth)
When: Learning new skills, following tutorials, reading docs
Where: Google Drive (People/Learning-Plans/2026/YourName-Learning-Log.gsheet)
Process: Track in learning log, discuss in 1:1s, apply to work
Example: Alice learning advanced Dart null safety → logs hours → no RFC needed
2. Team Knowledge Sharing (Informal)
When: Discovered something useful, solved interesting problem
Where: Slack, Show & Tell sessions, Tech Talks
Process:
- Weekly Show & Tell (Fridays, 30 min, recorded)
- Monthly Tech Talks (45 min deep dives)
- Slack threads in team channels
Example: Bob learned clever list optimization → demos in Show & Tell → posts code snippet
3. Exploratory Spike (Time-boxed POC)
When: Need hands-on validation before deciding
Where: Git branch spike/feature-name
Process:
- Time-box: 1-5 days max
- Document findings in branch README
- Demo to team → Delete or promote to RFC
Example: Charlie tries GraphQL subscriptions for 2 days → finds it adds complexity → shares findings → no RFC
4. Structured Research (RFC)
When: Multiple options, affects team/company, needs input
Where: Fumadocs (/architecture/rfcs/) or Repo (docs/rfcs/)
Process: See Architecture Decision Process below
5. Formal Decision (ADR)
When: Decision is made and must be documented
Where: Fumadocs or Repo depending on level
Process: See Architecture Decision Process below
Preventing Duplicate Research
Before Starting Research:
✅ Check RFC Registry - Is someone already researching this?
✅ Ask in Slack - #engineering-architecture: "Anyone researching X?"
✅ Review Technology Radar - Do we already have guidance?
✅ Search Past ADRs - Has this been decided before?
Communication Strategy:
- Announce intent early in
#engineering-architecture - Weekly Architecture Digest (automated Slack message)
- RFC registry updated weekly in Fumadocs
Architecture Decision Process
Two-Stage Process: RFC → ADR
Research Phase (RFC) → Decision Phase (ADR)
2-4 weeks FinalThree Levels of Decisions
| Level | Scope | Owner | Location | Example |
|---|---|---|---|---|
| Level 1 | Company-wide | CTO/VP Eng | /architecture/decisions/ | Flutter vs React Native |
| Level 2 | All apps of one platform | Platform Tech Lead | /architecture/<platform>/decisions/ | BLoC vs Riverpod for ALL mobile |
| Level 3 | Single application | Team Tech Lead | <repo>/docs/adrs/ | Offline-first for SAT |
RFC (Request for Comments) Template
# RFC-XXX: [Question Being Researched]
**Status:** Open | Under Review | Resolved → ADR-XXX | Rejected
**Level:** Company-Wide | Platform | Application
**Author:** Name
**Date:** YYYY-MM-DD
## Problem Statement
What problem are we solving?
## Options Investigated
### Option 1: [Name]
**Pros:** ...
**Cons:** ...
**Spike Results:** Link to branch
### Option 2: [Name]
...
## Comparison Matrix
| Criteria | Option 1 | Option 2 |
| ----------- | -------- | -------- |
| Performance | Fast | Medium |
## Open Questions
- Question 1?
## Next Steps
- [ ] Task (Owner, Due Date)
## Resolution
**Date:** YYYY-MM-DD
**Outcome:** Chose Option X
**ADR:** Link to ADR-XXXADR Template
# ADR-XXX: [Decision Made]
**Status:** Accepted | Superseded by ADR-YYY
**Date:** YYYY-MM-DD
**Level:** 1 | 2 | 3
**Platform:** Mobile | Backend | Web (if Level 2/3)
## Context
What problem does this solve?
## Decision
We will [decision].
## Consequences
**Positive:**
- Benefit 1
**Negative:**
- Trade-off 1
## Related
- RFC-XXX (research that led here)
- ADR-YYY (supersedes this)Approval Process by Level
Level 1 (Company-Wide):
- RFC drafted by Architecture Guild → 2-4 weeks research
- Reviewed with all platform leads
- Approved by CTO/VP Engineering
- ADR published in
/architecture/decisions/ - Announced in
#engineering-all
Level 2 (Platform):
- RFC drafted by platform architect → 2-3 weeks research
- Reviewed with platform guild
- Approved by platform tech lead
- ADR published in
/architecture/<platform>/decisions/ - Announced in platform channel
Level 3 (Application):
- RFC (optional) or team discussion → 1-2 weeks
- Tech lead approves
- ADR documented in
<repo>/docs/adrs/ - No announcement needed
- Exception: If deviating from Level 2, must request exception
Decision Tree: Where Does This Go?
For Documentation
Q: Is this an official record?
→ Yes: Google Drive (reviews, policies, compliance)
Q: Is this about how we work together across teams?
→ Yes: Fumadocs (processes, standards, onboarding)
Q: Is this about how to build/test/deploy a specific app?
→ Yes: Repository (setup, API docs, implementation)
Q: Is this living specifications?
→ Yes: Repository (features/ for Gherkin)
Q: Is this a standard architecture used across apps?
→ Yes: Fumadocs (/architecture/<platform>/)
For Learning & Research
Q: Is this personal skill development?
→ Yes: Learning Log (Google Drive)
Q: Worth sharing but not deciding?
→ Yes: Show & Tell / Slack
Q: Need hands-on validation?
→ Yes: Spike (time-boxed branch)
Q: Multiple options, needs structured research?
→ Yes: RFC (Fumadocs or repo)
Q: Decision is final?
→ Yes: ADR (Fumadocs or repo)
For Architectural Decisions
Q: Affects ALL platforms (mobile + backend + web)?
→ Level 1: Fumadocs /architecture/decisions/
Q: Affects all apps of ONE platform?
→ Level 2: Fumadocs /architecture/<platform>/decisions/
Q: Affects only THIS specific app?
→ Level 3: Repository docs/adrs/
Maintenance & Ownership
Update Responsibilities
| Layer | Owner | Update Trigger | Frequency |
|---|---|---|---|
| Google Drive: Policies | HR + Leadership | Policy changes | Quarterly |
| Google Drive: People | Managers | Performance cycles | Semi-annually |
| Google Drive: Meeting Notes | Meeting organizers | After each meeting | Weekly/Monthly |
| Google Drive: Learning Logs | Individual engineers | Personal learning | Ongoing |
| Google Drive: Show & Tell/Tech Talks | Event organizers | After each event | Weekly/Monthly |
| Google Drive: Budget | Finance + Leadership | Budget requests | Ongoing |
| Fumadocs: Processes | Architecture Guild + Platform Leads | Process changes | Monthly |
| Fumadocs: RFC Registry | Architecture Guild | New RFCs opened/resolved | Weekly |
| Fumadocs: ADRs | Decision Authors | Never (append only) | Never |
| Repository Docs | Development Teams | Code changes | Continuously |
Governance
Architecture Guild (Bi-weekly):
- Review open RFCs
- Approve Level 1 & 2 ADRs
- Update Technology Radar
- Maintain RFC registry
Platform Guilds (Monthly):
- Review platform-specific RFCs
- Approve Level 2 ADRs
- Update platform standards
Documentation Review (Quarterly):
- Audit for outdated content
- Fix broken links
- Update examples
- Archive obsolete docs
Key Principles
✅ Single Source of Truth - Each piece of info lives in ONE place
✅ Link, Don't Duplicate - Reference authoritative sources
✅ Document Decisions, Not Explorations - ADRs are final, RFCs are research
✅ Make Knowledge Discoverable - Clear structure, good search
✅ Preserve Context - Why decisions were made (RFCs + ADRs)
✅ Collaborate Early - Prevent duplicate research
✅ Appropriate Formality - Not everything needs an RFC
✅ Process vs Records - HOW TO goes in Fumadocs, WHAT HAPPENED goes in Google Drive ⭐
Quick Reference Card
"Where do I put this?"
| Content Type | Location | Tool |
|---|---|---|
| RECORDS (What happened, who, when) | ||
| Performance review | People/Performance-Reviews/ | Google Drive |
| Learning log | People/Learning-Plans/ | Google Drive |
| Show & Tell log | Meeting-Notes/Show-and-Tell/ | Google Drive |
| Tech Talk schedule | Meeting-Notes/Tech-Talks/ | Google Drive |
| Architecture Guild notes | Meeting-Notes/Architecture-Guild/ | Google Drive |
| Learning budget request | Budget/Learning-Development-Budget/ | Google Drive |
| Career ladder PDF | Official-Policies/ | Google Drive |
| PROCESSES (How to do things) | ||
| BDD process guide | /how-we-work/bdd/ | Fumadocs |
| Show & Tell process | /how-we-work/learning-and-research/knowledge-sharing.mdx | Fumadocs |
| Tech Talk process | /how-we-work/learning-and-research/tech-talks.mdx | Fumadocs |
| Learning budget process | /how-we-work/learning-and-research/learning-budget.mdx | Fumadocs |
| RFC process | /how-we-work/architecture-decisions/ | Fumadocs |
| Mobile standard architecture | /architecture/mobile/ | Fumadocs |
| RESEARCH & DECISIONS | ||
| Company-wide RFC | /architecture/rfcs/open/ | Fumadocs |
| Platform RFC | /architecture/<platform>/rfcs/ | Fumadocs |
| App RFC | docs/rfcs/ | Repository |
| Company ADR | /architecture/decisions/ | Fumadocs |
| Platform ADR | /architecture/<platform>/decisions/ | Fumadocs |
| App ADR | docs/adrs/ | Repository |
| IMPLEMENTATION | ||
| Gherkin features | features/ | Repository |
| Setup instructions | docs/setup.md | Repository |
| Spike POC | spike/feature-name | Git branch |
"What process do I follow?"
| Activity | Process |
|---|---|
| Personal learning | Track in learning log → Discuss in 1:1 |
| Share knowledge | Show & Tell (Friday) or Tech Talk (monthly) |
| Quick validation | Spike (1-5 days) → Demo findings |
| Research decision | RFC (2-4 weeks) → Architecture Guild review → ADR |
| Make Level 3 decision | Team discussion → Tech lead approves → ADR in repo |
| Make Level 2 decision | Platform RFC → Guild review → ADR in Fumadocs |
| Make Level 1 decision | Company RFC → Leadership review → ADR in Fumadocs |