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:
- Read this plan to understand current session goals
- Check dependencies are complete
- Set up todo list for the session
- Read relevant documentation
During Each Session:
- Follow the task checklist
- Update todo list as you progress
- Test as you go
- Commit code frequently
- Document any issues/blockers
After Each Session:
- Mark all todos complete
- Commit all changes
- Update this plan with completion status
- Note any carry-over tasks
- 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