The brief#
The reader now has editors. Build the management side of the same interview publication, then show where the Vue 2 architecture has changed and where its behaviour contract has survived.
Editorial operations#
List, create, edit and delete article channels. List articles with filters and pagination; create, edit and delete articles. Confirm destructive actions, preserve an unsaved draft after a failed request and distinguish an empty filter result from an error.
Account operations#
Implement registration, login, token-based route protection and persisted user state through Pinia. Support profile editing, avatar selection with a preview, and a fixture-backed password reset flow. Logout must clear persisted identity.
Shared request policy#
Use one configured Axios instance with request and response interceptors, token injection and shared error handling. Handle an expired session consistently across routes. Use Element Plus for management controls and Sass for the interface. A client-side guard is not server authorisation.
The migration contract#
Submit JavaScript. TypeScript is introduced while this assignment is being completed, but is neither required nor rewarded here. Compare one reader behaviour across Vue 2 and Vue 3, and explain a concrete improvement in ownership or error handling.
What you submit#
Submit the deployed URL and repository URL through the course submission record described in Policies. Tag the submitted source submission-a2 and include a lockfile. Your README must give installation, development, build and verification commands, the fixture accounts, and a short acceptance walkthrough. Include screenshots at both review sizes and an attribution / assistance record.
Include an ownership diagram showing views, Pinia, router and request wrapper. Name a responsibility that moved from Vuex to Pinia and one value deliberately kept out of a global store.
How quality is judged#
A passing implementation makes the named journeys possible. A strong implementation also recovers from cancellation, delay and failure without contradictory state. The highest band makes the ownership and tradeoffs easy for another developer to inspect and change; more screens do not compensate for a broken core journey. Each criterion below is assessed against that distinction.
Before you hand over#
Filter to a last page, delete its final article, then expire the session during two requests. The page index must recover, stale identity must disappear and the app must present a coherent route back to login.
Use the fixture contract and tool versions and read the course policies for individual work, assistance, extensions and feedback. No backend implementation is assessed.