Athena — mahmoud-consultancy/archive/old-docs/SESSION_PLAN.md

Session-Based Work Plan

Created: October 15, 2025 Last Updated: October 15, 2025 Total Sessions: 17 sessions Total Time: 100-120 hours Approach: MVP First (Sprint 4 → Deploy → Sprint 5)

Note: SCSS Optimization (originally Sessions 1-2) has been moved to Session 16 (end of backlog) as build warnings are not blocking deployment.


Session Overview

This plan breaks down all remaining work into manageable sessions. Each session is designed to be completed independently, with clear deliverables and dependencies.

Parallel Work Opportunities

  • Track A (Backend): Sessions 7, 8, 9 can run parallel to Track B
  • Track B (Frontend): Sessions 10, 11 can run parallel to Track A
  • Track C (Content): Sessions 14, 15 can run parallel to development
  • Track D (Testing): Session 6 can run anytime after Session 5

SPRINT 4 SESSIONS (Deploy-Ready Platform)

Session 1: CV Upload Button Component

Time: 2-3 hours Dependencies: None Can Run in Parallel: No

Tasks:

  • [ ] Create cv-upload-button component
  • [ ] Add to job-list page (visible on homepage)
  • [ ] Handle authenticated state (show "Upload CV")
  • [ ] Handle unauthenticated state (show "Register to Upload CV")
  • [ ] Style with Bootstrap + shared styles
  • [ ] Mobile responsive
  • [ ] Add click handler (opens modal)

Deliverables:

  • Functional CV upload button
  • Visible on job-list page
  • Responsive design
  • Component unit tests

Component Structure:

// cv-upload-button.component.ts
@Component({
  selector: 'app-cv-upload-button',
  standalone: true,
  templateUrl: './cv-upload-button.component.html',
  styleUrls: ['./cv-upload-button.component.scss']
})
export class CvUploadButtonComponent {
  @Output() uploadClick = new EventEmitter<void>();
  isAuthenticated = signal<boolean>(false);
}

Success Criteria:

  • Button visible on job-list page
  • Different states for auth/non-auth
  • Opens modal on click
  • Mobile friendly

Session 2: CV Upload Modal Component

Time: 2-3 hours Dependencies: Session 1 Can Run in Parallel: No

Tasks:

  • [ ] Create cv-upload-modal component
  • [ ] File upload with drag-and-drop
  • [ ] File validation (PDF, DOC, DOCX, max 5MB)
  • [ ] Upload progress indicator
  • [ ] Success/error messages
  • [ ] Integrate with backend /api/applications/upload-cv
  • [ ] Mobile responsive modal
  • [ ] Accessibility (keyboard navigation, ARIA)

Deliverables:

  • Functional CV upload modal
  • Complete upload flow
  • Error handling
  • Component unit tests

Success Criteria:

  • File upload works end-to-end
  • Validation prevents invalid files
  • Progress indicator shows during upload
  • Modal closes after success
  • Error messages are clear

Session 3: Admin Navigation Component

Time: 2-3 hours Dependencies: None Can Run in Parallel: Yes (can run parallel to Sessions 1-2)

Tasks:

  • [ ] Create admin-nav component
  • [ ] Add breadcrumbs navigation
  • [ ] Active route highlighting
  • [ ] User menu with logout
  • [ ] Mobile hamburger menu
  • [ ] Integrate with all admin pages
  • [ ] Add to admin layout

Deliverables:

  • Functional admin navigation
  • Breadcrumbs on all admin pages
  • Mobile menu
  • Component unit tests

Success Criteria:

  • Navigation works on all admin pages
  • Active route is highlighted
  • Mobile menu functions correctly
  • Logout works

Session 4: Mobile & Cross-Browser Testing

Time: 3-4 hours Dependencies: Sessions 1-3 complete Can Run in Parallel: Yes (can be separate testing session)

Tasks:

  • [ ] Test all pages on mobile (320px-768px)
  • [ ] Fix layout issues
  • [ ] Verify touch interactions
  • [ ] Test forms on mobile
  • [ ] Test modals on mobile
  • [ ] Chrome testing (latest)
  • [ ] Firefox testing (latest)
  • [ ] Safari testing (latest)
  • [ ] Edge testing (latest)
  • [ ] Document any browser-specific issues

Deliverables:

  • Mobile testing report
  • Cross-browser compatibility report
  • All critical issues fixed
  • Nice-to-have issues documented

Success Criteria:

  • All pages responsive 320px-768px
  • No critical layout issues
  • Forms work on all browsers
  • Modals work on all browsers

DEPLOY CHECKPOINT 🚀

After Session 4, the platform is production-ready and can be deployed.

Recommended: Deploy to production, gather user feedback, then proceed with Sprint 5 (Knowledge Base).


SPRINT 5 SESSIONS (Knowledge Base Feature)

Session 5: KB Backend Entities & Repositories

Time: 3-4 hours Dependencies: None (can start immediately after Session 4) Can Run in Parallel: Yes (Backend Track A)

Tasks:

  • [ ] Create Article entity
  • [ ] Create ArticleCategory enum
  • [ ] Create ArticleRating entity
  • [ ] Create ArticleBookmark entity
  • [ ] Create repositories with custom queries
  • [ ] Create Liquibase migration
  • [ ] Run migration on dev database
  • [ ] Verify tables created

Deliverables:

  • 4 entity classes
  • 4 repository interfaces
  • Database migration
  • Tables in database

Entity Structure:

@Entity
@Table(name = "articles")
public class Article {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, length = 200)
    private String title;

    @Column(nullable = false, unique = true, length = 250)
    private String slug;

    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private ArticleCategory category;

    @Lob
    @Column(nullable = false, columnDefinition = "TEXT")
    private String content; // Markdown

    @Column(nullable = false)
    private Integer viewCount = 0;

    @Column(nullable = false)
    private Boolean published = false;
}

Success Criteria:

  • Entities compile without errors
  • Migration runs successfully
  • Tables visible in database
  • Repository queries work

Session 8: KB Backend Service Layer

Time: 4-5 hours Dependencies: Session 7 Can Run in Parallel: Yes (Backend Track A)

Tasks:

  • [ ] Create ArticleService (CRUD operations)
  • [ ] Implement slug generator
  • [ ] Implement search functionality
  • [ ] Implement related articles algorithm
  • [ ] Create ArticleRatingService
  • [ ] Create ArticleBookmarkService
  • [ ] Add caching (Redis) for popular articles
  • [ ] Unit tests for all services

Deliverables:

  • 3 service classes
  • Search functionality
  • Related articles algorithm
  • Unit tests (>80% coverage)

Service Methods:

public interface ArticleService {
    ArticleDTO create(CreateArticleRequest request);
    ArticleDTO update(Long id, UpdateArticleRequest request);
    void delete(Long id);
    ArticleDTO findById(Long id);
    ArticleDTO findBySlug(String slug);
    Page<ArticleDTO> findAll(Pageable pageable);
    Page<ArticleDTO> findByCategory(ArticleCategory category, Pageable pageable);
    Page<ArticleDTO> search(String query, Pageable pageable);
    List<ArticleDTO> findRelated(Long articleId, int limit);
    void incrementViewCount(Long id);
}

Success Criteria:

  • All service methods work
  • Search returns relevant results
  • Related articles algorithm works
  • Unit tests pass

Session 9: KB Backend REST API

Time: 3-4 hours Dependencies: Session 8 Can Run in Parallel: Yes (Backend Track A)

Tasks:

  • [ ] Create ArticleController (public endpoints)
  • [ ] Create AdminArticleController (admin endpoints)
  • [ ] Create DTOs with validation
  • [ ] Add API documentation (Swagger)
  • [ ] Integration tests
  • [ ] Test with Postman/curl

Deliverables:

  • 2 controller classes
  • DTOs with validation
  • Swagger documentation
  • Integration tests

Public Endpoints:

GET    /api/articles                     - List all published
GET    /api/articles/{slug}              - Get by slug
GET    /api/articles/category/{category} - List by category
GET    /api/articles/search?q={query}    - Search
POST   /api/articles/{id}/rate           - Rate article
POST   /api/articles/{id}/bookmark       - Bookmark article

Admin Endpoints:

POST   /api/admin/articles               - Create article
PUT    /api/admin/articles/{id}          - Update article
DELETE /api/admin/articles/{id}          - Delete article
GET    /api/admin/articles               - List all (incl. unpublished)
POST   /api/admin/articles/{id}/publish  - Publish article

Success Criteria:

  • All endpoints work
  • Validation catches invalid input
  • Auth/authorization works
  • Integration tests pass

Session 10: KB Frontend Core Components

Time: 4-5 hours Dependencies: Session 9 (needs API) Can Run in Parallel: Yes (Frontend Track B - parallel to Sessions 7-9 if mocking API)

Tasks:

  • [ ] Create KbService (API client)
  • [ ] Create kb-home component
  • [ ] Create article-list component
  • [ ] Create article-detail component
  • [ ] Create article-search component
  • [ ] Add routing for KB pages
  • [ ] Add KB link to main navigation
  • [ ] Component unit tests

Deliverables:

  • 5 Angular components
  • KB service
  • Routing configured
  • Unit tests

Component Structure:

// kb-home.component.ts
@Component({
  selector: 'app-kb-home',
  standalone: true,
  imports: [ArticleListComponent, SearchBarComponent],
  templateUrl: './kb-home.component.html'
})
export class KbHomeComponent {
  categories = signal<ArticleCategory[]>([]);
  recentArticles = signal<Article[]>([]);
  popularArticles = signal<Article[]>([]);
}

Success Criteria:

  • KB home page displays
  • Article list shows articles
  • Article detail shows content
  • Search returns results
  • Navigation works

Session 11: KB Frontend Widgets & Features

Time: 3-4 hours Dependencies: Session 10 Can Run in Parallel: Yes (Frontend Track B)

Tasks:

  • [ ] Create rating widget
  • [ ] Create bookmark button
  • [ ] Create related articles sidebar
  • [ ] Create share buttons (Twitter, LinkedIn)
  • [ ] Create table of contents (auto-generated from headings)
  • [ ] Integrate ngx-markdown for rendering
  • [ ] Add syntax highlighting for code blocks
  • [ ] Mobile responsive

Deliverables:

  • 5 widget components
  • Markdown rendering
  • Code syntax highlighting
  • Mobile responsive

Success Criteria:

  • Rating widget works
  • Bookmark saves/removes
  • Related articles show
  • Share buttons work
  • TOC navigation works
  • Code blocks highlighted

Session 12: Admin CMS - Article Management

Time: 4-5 hours Dependencies: Session 9 (needs admin API) Can Run in Parallel: No (needs Sessions 7-9 complete)

Tasks:

  • [ ] Create admin-kb-list component
  • [ ] Create admin-kb-editor component
  • [ ] Integrate markdown editor (ngx-markdown-editor or similar)
  • [ ] Live preview panel
  • [ ] Image upload functionality
  • [ ] Category/tag selection
  • [ ] Save draft functionality
  • [ ] Publish/unpublish toggle

Deliverables:

  • 2 admin components
  • Markdown editor integration
  • Image upload
  • Component unit tests

Editor Features:

// admin-kb-editor.component.ts
@Component({
  selector: 'app-admin-kb-editor',
  standalone: true,
  templateUrl: './admin-kb-editor.component.html'
})
export class AdminKbEditorComponent {
  article = signal<Article | null>(null);
  markdownContent = signal<string>('');
  previewHtml = computed(() => this.markdownService.render(this.markdownContent()));

  saveDraft(): void { /* ... */ }
  publish(): void { /* ... */ }
  uploadImage(file: File): void { /* ... */ }
}

Success Criteria:

  • Can create new articles
  • Can edit existing articles
  • Live preview works
  • Image upload works
  • Can save drafts
  • Can publish articles

Session 13: Admin CMS - Analytics Dashboard

Time: 3-4 hours Dependencies: Session 12 Can Run in Parallel: No

Tasks:

  • [ ] Create admin-kb-analytics component
  • [ ] Display article views chart
  • [ ] Display rating analytics
  • [ ] Show popular articles
  • [ ] Show search query analytics
  • [ ] Category breakdown chart
  • [ ] Export analytics to CSV

Deliverables:

  • Analytics component
  • Charts/visualizations
  • Export functionality

Success Criteria:

  • Analytics display correctly
  • Charts are readable
  • Export works
  • Data is accurate

Session 14: KB Content Writing - Part 1 (Articles 1-10)

Time: 15-20 hours Dependencies: Session 12 (needs CMS to publish) Can Run in Parallel: Yes (Content Track C - can run parallel to Sessions 12-13)

Tasks:

  • [ ] Write Article 1: "Wat is detachering? Complete uitleg voor IT'ers"
  • [ ] Write Article 2: "ZZP vs Payroll vs Detachering: De verschillen"
  • [ ] Write Article 3: "Voordelen van detachering voor IT professionals"
  • [ ] Write Article 4: "Rechten en plichten als gedetacheerde"
  • [ ] Write Article 5: "Tarieven onderhandelen: Tips voor detacheerders"
  • [ ] Write Article 6: "InterimPlaza vs Brunel: Wat zijn de verschillen?"
  • [ ] Write Article 7: "Waarom kiezen IT'ers voor InterimPlaza?"
  • [ ] Write Article 8: "Onze tariefstructuur volledig uitgelegd"
  • [ ] Write Article 9: "De perfecte IT CV schrijven in 2025"
  • [ ] Write Article 10: "CV template voor Java developers"
  • [ ] Add images/diagrams for each article
  • [ ] SEO optimization (meta descriptions, keywords)
  • [ ] Internal linking between articles
  • [ ] Review and edit
  • [ ] Publish via CMS

Deliverables:

  • 10 published articles (1,500-2,500 words each)
  • Images/diagrams
  • SEO optimized

Success Criteria:

  • All articles published
  • Professional quality
  • SEO optimized
  • Images included

Session 15: KB Content Writing - Part 2 (Articles 11-20)

Time: 15-20 hours Dependencies: Session 14 Can Run in Parallel: Yes (Content Track C)

Tasks:

  • [ ] Write Article 11: "Welke skills moet je benadrukken als IT'er?"
  • [ ] Write Article 12: "Veelgemaakte fouten in IT CV's"
  • [ ] Write Article 13: "LinkedIn profiel optimaliseren voor IT'ers"
  • [ ] Write Article 14: "IT tarieven 2025: Overzicht per specialisatie"
  • [ ] Write Article 15: "Junior vs medior vs senior: Tarief verschillen"
  • [ ] Write Article 16: "Meest gevraagde IT skills in 2025"
  • [ ] Write Article 17: "Hoe werkt het sollicitatieproces?"
  • [ ] Write Article 18: "Wat staat er in mijn contract?"
  • [ ] Write Article 19: "Wanneer krijg ik mijn salaris?"
  • [ ] Write Article 20: "Is er opleidingsbudget beschikbaar?"
  • [ ] Add images/diagrams for each article
  • [ ] SEO optimization
  • [ ] Internal linking
  • [ ] Review and edit
  • [ ] Publish via CMS

Deliverables:

  • 10 published articles (1,500-2,500 words each)
  • Images/diagrams
  • SEO optimized

Success Criteria:

  • All 20 articles published
  • Professional quality
  • SEO optimized
  • Complete content library

POST-SPRINT SESSIONS (Cleanup & Optimization)

Session 16: SCSS Optimization (MOVED FROM SPRINT 4)

Time: 4-6 hours Dependencies: All Sprint 4 & 5 work complete Can Run in Parallel: No Status: DEPRIORITIZED - Build warnings are not blocking

Tasks:

  • [ ] Optimize dashboard.scss (9.05 kB → <8 kB)
  • [ ] Optimize application-form.scss (8.09 kB → <8 kB)
  • [ ] Optimize job-detail.component.scss (7.50 kB → <8 kB)
  • [ ] Optimize applications.scss (9.23 kB → <8 kB)
  • [ ] Optimize register.scss (4.68 kB → <4 kB)
  • [ ] Optimize job-list.scss (4.26 kB → <4 kB)
  • [ ] Consider alternative approaches: increase budget, use utility classes, or manual deduplication
  • [ ] Run production build and verify no errors

Deliverables:

  • All SCSS files within budget
  • Clean production build
  • No visual regressions

Success Criteria:

  • Production build without budget errors
  • All pages render correctly
  • Performance not degraded

Note: This was originally Sessions 1-2 but was deprioritized because:

  • Mixin approach increases bundle size (code duplication)
  • Build warnings are not blocking deployment
  • Can be addressed after core features complete

Session 17: Documentation Cleanup

Time: 4-6 hours Dependencies: All Sprint 4 & 5 work complete Can Run in Parallel: No (do AFTER all sprints complete)

Tasks:

  • [ ] Audit all documentation files
  • [ ] Categorize by relevance (keep, archive, delete)
  • [ ] Identify duplicate content
  • [ ] Move outdated docs to docs/bin/
  • [ ] Remove duplicate content
  • [ ] Update cross-references
  • [ ] Create master index (docs/INDEX.md)
  • [ ] Update README with doc links
  • [ ] Document the cleanup process

Deliverables:

  • Clean documentation structure
  • Master index
  • Cleanup documentation

Success Criteria:

  • No duplicate docs
  • All outdated docs in bin/
  • Clear navigation
  • Updated cross-references

Parallel Execution Plan

If you want to run multiple sessions in parallel, here's the recommended approach:

Parallel Set 1: Sprint 4 Polish

  • Session 5 (Admin Nav) can run parallel to Sessions 3-4 (CV Upload)
  • Session 6 (Testing) can run as separate QA session

Parallel Set 2: Sprint 5 Backend

  • Sessions 7, 8, 9 (Backend Track A) can run sequentially but parallel to Frontend
  • Estimated time if sequential: 10-13 hours

Parallel Set 3: Sprint 5 Frontend

  • Sessions 10, 11 (Frontend Track B) can mock API and run parallel to Sessions 7-9
  • Estimated time if sequential: 7-9 hours

Parallel Set 4: Sprint 5 Admin & Content

  • Session 12 (Admin CMS) requires Sessions 7-9 complete
  • Session 13 (Analytics) requires Session 12
  • Sessions 14, 15 (Content) can run parallel to Sessions 12-13 if CMS ready

Parallel Timeline Example:

Week 1:

  • Session 1 (SCSS Part 1)
  • Session 2 (SCSS Part 2)
  • Session 3 (CV Button) + Session 5 (Admin Nav) in parallel

Week 2:

  • Session 4 (CV Modal)
  • Session 6 (Testing)
  • DEPLOY TO PRODUCTION 🚀

Week 3:

  • Session 7 (KB Entities) + Session 10 (Frontend Core) in parallel
  • Session 8 (KB Services) + Session 11 (Frontend Widgets) in parallel
  • Session 9 (KB API)

Week 4:

  • Session 12 (Admin CMS) + Session 14 (Content Part 1) in parallel
  • Session 13 (Analytics) + Session 15 (Content Part 2) in parallel

Week 5:

  • Session 16 (Documentation Cleanup)
  • Final testing and production deployment of KB

Session Execution Guidelines

Before Each Session:

  1. Read this plan to understand current session goals
  2. Check dependencies are complete
  3. Set up todo list for the session
  4. Read relevant documentation

During Each Session:

  1. Follow the task checklist
  2. Update todo list as you progress
  3. Test as you go
  4. Commit code frequently
  5. Document any issues/blockers

After Each Session:

  1. Mark all todos complete
  2. Commit all changes
  3. Update this plan with completion status
  4. Note any carry-over tasks
  5. Prepare summary for user

Session Completion Criteria:

  • All tasks checked off
  • All deliverables created
  • Tests passing
  • Code committed
  • No critical blockers

Risk Mitigation

If Session Takes Longer Than Expected:

  • Split into Part 1 and Part 2
  • Document what's complete
  • Create clear handoff notes
  • Update dependencies for next session

If Tests Fail:

  • Document the failing tests
  • Create separate debugging session
  • Don't block other parallel work
  • Fix in next available session

If API Changes Needed:

  • Document the changes
  • Update both backend and frontend
  • Re-run integration tests
  • Update API documentation

Success Metrics

Sprint 4 Complete:

  • ✅ Production build succeeds (no warnings)
  • ✅ CV upload button functional
  • ✅ Mobile responsive (all pages)
  • ✅ Cross-browser compatible
  • ✅ Admin navigation working

Sprint 5 Complete:

  • ✅ KB backend deployed
  • ✅ 20+ articles published
  • ✅ Admin can manage content
  • ✅ Search working (<1s response)
  • ✅ All categories have content

Documentation Cleanup Complete:

  • ✅ All outdated docs in bin/
  • ✅ No duplicates
  • ✅ Clear navigation
  • ✅ Master index created

Next Step: Begin Session 1 - CV Upload Button Component

Reacties

Nog geen reacties