# Interface Shell for Generative Catalog Area: Shell State: DONE ### Data Models - [x] Use zod for data type schema validation - [x] Add `post` data type. - [x] Add `list` data type. - [x] Modify `profile` and `profile.collection`: profile.collection to have `lists` and `posts`. ### Add Pages and Add Components - [x] List: junwon.com/list/{title} - [x] Post: junwon.com/post/{title} - [x] Make new components: page, card - [x] Topic: junwon.com/topic/{topic_name} ### Refactor Code - [x] Make a separate package for managing data models for Centum Catalog: packages/centum ### Search - [x] Search box to open topic page. ### Topic Page (page.kind == topic) - [x] Top Bar: BackButton, PageTitle, ActionButton - [x] Align Top Bar: BackButton:left, PageTitle:middle, ActionButton:right - [x] Call API: POST:/topic/[topic_name] - [x] Render: page.title, page.headline, cards.forEach(card.title, card.contents). - [x] Render links in card.contents. Reroute to /topic/{destination_topic}. - [x] Show loading - [x] Upon generation, refresh page. - [x] Set page title for browser tab bar - [x] Show generating: MissingTopicCard, GenerationStateCard ### Aesthetics - [x] Centering {logo, title} on home, control, topic - [x] Page: Title, Headline (Use InfoCard) ### Small feature in control page - [x] Manually change into night mode ### Router Navigation - [x] Page.BackButton route back. - [x] Redirect /page and /list to /page/new and /list/new. - [x] Redirect /topic to home. ### CUT - Keep showing TopBar while scrolling down. Show page.title only onScroll. - Add section in post. Edit section in post. - Save to Collection for Topics and Cards in Topics - Related Topics Card