Page MenuHomePhabricator

Project Proposal: 3-Month Outreachy Project Plan — Add Wikidata Editing Features to Paulina — by Afanyu Lionel
Open, Needs TriagePublic

Description

🗓️ 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

ComponentTechnology
BackendFlask (Python)
FrontendJinja2 templates, HTML, CSS, JS
APIwikibase-rest-api-client
AuthOAuth 2.0
LocalizationFlask-Babel
TestingUnit tests + manual testing
Data sourceWikidata REST API (Sandbox)