Skip to main content

Assignment 2: Vue 3 Admin Dashboard

Move from a reader to its editorial desk, with one place for identity, request policy and reusable management behaviour.

Course weight35%
Released
12 April 2027
Due
2 May 2027 · 23:59 Canberra

Build environment

Required toolkit

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.

The spec

The brief poses the problem and leaves room for a response. The spec is the fixed part: what a marker checks. Some lines can be checked mechanically; the rest call for judgement.

How it is marked

CriterionWeight
Core functionality35%
Pinia and application state20%
Router and request architecture20%
Admin UX and component design15%
Code quality10%