Skip to content

feat: Implement SpaceX rocket list and detail with filter and add#113

Open
WildanAlfandi wants to merge 1 commit into
allobankdev:mainfrom
WildanAlfandi:feat/allo-spacex
Open

feat: Implement SpaceX rocket list and detail with filter and add#113
WildanAlfandi wants to merge 1 commit into
allobankdev:mainfrom
WildanAlfandi:feat/allo-spacex

Conversation

@WildanAlfandi
Copy link
Copy Markdown

Allo SpaceX Frontend Submission

Implementation of the SpaceX rocket list and detail app per the assignment requirements.

Features

  • Rocket list with image, name, and description
  • Search filter by name or description
  • Add new rocket via dialog form (client-side; SpaceX API is read-only)
  • Rocket detail page (image, name, description, cost per launch, country, first flight, status)
  • UI states: Loading, Error+Retry, Success — separate state for list and detail
  • Responsive grid (1/2/3/4 columns at xs/sm/md/lg breakpoints)
  • List cache: navigating Detail → Back does not re-fetch
  • Locally-added rockets resolve from the in-memory list without an API call

Tech Stack

Vue 3 (Composition API) + TypeScript + Vuetify 3 + Pinia + Vue Router (file-based via unplugin-vue-router) + Vite

Project Structure

  • src/components/ — reusable UI: LoadingState, ErrorState, RocketCard, AddRocketDialog
  • src/pages/index.vue — rocket list page (route /)
  • src/pages/rockets/[id].vue — rocket detail page (route /rockets/:id)
  • src/stores/rocket.ts — Pinia store with separated list and detail state

How to Run

npm install
npm run dev      # http://localhost:3000
npm run build    # production build

See README.md for full design notes, including the separation of list and detail state, locally-added rocket resolution, filter re-application after add, and image fallback strategy.

Submitted by: Wildan Alfandi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant