🗓️ Outreachy 3-Month Plan — Paulina: Wikidata Editing Features with Unit Testing
Project: Paulina (Toolforge)
Repository: GitLab
Library: wikibase-rest-api-client (Python)
Framework: Flask + Jinja Templates
Authentication: OAuth 2.0
Mentors: Jorge Gemetto & Nat Hernández Clavijo
Applicant: Afanyu Lionel
Applicant Email: afanyulionel@gmail.com
Goal: Extend Paulina to allow authenticated Wikimedia users to edit and create authors and works, with full-stack UI and automated unit testing to ensure all functionality works as expected.
📅 Month 1 — Foundation, OAuth & Backend Setup
Week 1 — Planning & Kickoff
Goals
- Kickoff meeting with mentors: review strategy, deliverables, weekly review schedule.
- Verify local development environment works.
- Explore wikibase-rest-api-client capabilities.
- Plan testing strategy: define which unit tests will be written for each feature.
Deliverables
- Local dev environment ready.
- High-level architecture and testing plan documented.
- Weekly review with mentor.
Week 2 — OAuth 2.0 Authentication
Goals
- Implement Wikimedia OAuth 2.0 login/logout.
- Secure token storage.
- Minimal UI to display logged-in user.
- Write unit tests for authentication routes and session handling.
Deliverables
- Users can log in/out; tokens usable for API requests.
- Authentication unit tests passing.
- Weekly mentor review.
Week 3 — Backend Service Layer
Goals
- Set up backend service to handle all Wikidata operations (read/edit/create).
- Test service on Wikidata Sandbox.
- Implement error handling for failed requests or expired tokens.
- Write unit tests for each backend function.
Deliverables
- Backend service functional and tested.
- Unit tests for backend operations passing.
- Mentor review meeting.
Week 4 — Routes & UI Scaffold
Goals
- Scaffold Flask routes and placeholder templates for edit/create:
- Edit Author / Edit Work
- Create Author / Create Work
- Ensure templates integrate with existing UI and multilingual support.
- Write unit tests to ensure routes render correctly.
Deliverables
- Routes and templates scaffolded and tested.
- Weekly mentor review meeting.
📅 Month 2 — Full-Stack Editing & Creation Features
Week 5 — Edit Forms
Goals
- Implement edit forms for authors and works, pre-filled with data.
- Add validation and multilingual labels/messages.
- Write unit tests for form rendering, data prefill, and validation logic.
Deliverables
- Edit forms functional and tested.
- Mentor review: demo edit forms and validation.
Week 6 — Apply Edits
Goals
- Connect edit forms to backend service to update Wikidata Sandbox.
- Show feedback messages for success or failure.
- Write unit and integration tests to verify updates are sent and responses handled correctly.
Deliverables
- End-to-end edit workflow functional and tested.
- Weekly mentor review.
Week 7 — Create New Entities
Goals
- Implement create forms for authors and works.
- Validate required fields and provide user feedback.
- Show confirmation message with new QID.
- Write unit and integration tests for creation workflow.
Deliverables
- Fully functional create workflow, tested.
- Mentor review meeting.
Week 8 — Feature Stabilization & Mid-Term Review
Goals
- Manual and automated end-to-end testing of all edit/create flows.
- Implement additional error handling (token expiry, permission issues).
- UI refinements for consistency, accessibility, and multilingual support.
Deliverables
- Stable, polished edit/create features.
- Mid-term demo with mentors, feedback incorporated.
📅 Month 3 — Testing, Documentation & Finalization
Week 9 — Comprehensive Testing
Goals
- Write/expand unit tests for backend, frontend forms, and routes.
- Mock API responses to test failure scenarios.
- Ensure all edge cases are covered (invalid data, failed requests, token errors).
Deliverables
- Full unit test coverage for all new features.
- Mentor review: confirm testing completeness.
Week 10 — Documentation
Goals
- Update developer setup guide with OAuth 2.0 configuration and new routes.
- Write user documentation for edit/create functionality with screenshots/examples.
- Include notes on running unit tests.
Deliverables
- Complete developer and user documentation.
- Mentor review meeting.
Week 11 — Optimization & Final Review
Goals
- Refactor backend and frontend code for usability and performance.
- Ensure templates are accessible and multilingual-ready.
- Mentor review: final feedback and feature validation.
Deliverables
- Production-ready, optimized features.
- All unit tests passing.
Week 12 — Final Demo & Outreachy Report
Goals
- Conduct final demo for mentors and Wikimedia team.
- Submit Outreachy report summarizing project, challenges, and outcomes.
Deliverables
- Fully functional Paulina with editing and creation features.
- Complete unit tests and documentation.
- Outreachy report and final demo completed.
Expected Outcomes
- OAuth 2.0 authentication fully integrated.
- Full-stack UI for editing and creating authors/works.
- Polished, multilingual, and accessible interface.
- Unit tests written for every change to ensure functionality.
- Weekly mentor review meetings to minimize questions.
- Documentation for developers and users.
Tools & Technologies
| Component | Technology |
|---|---|
| Backend | Flask (Python) |
| Frontend | Jinja2 templates, HTML, CSS, JS |
| API | wikibase-rest-api-client |
| Auth | OAuth 2.0 |
| Localization | Flask-Babel |
| Testing | Unit tests + manual testing |
| Data source | Wikidata REST API (Sandbox) |