5.9 KiB
Phase 2 Breakdown: Core Website & Frontend Development
With the project's foundation in place, this phase focuses on building the visible, public-facing portion of the Copper Tone Technologies website. The goal is to create a professional, informative, and visually appealing user experience.
Task 2.1: Site Structure and Component Design
A well-organized component library is essential for a maintainable and scalable frontend. We will adopt a logical structure for storing and organizing components.
- 2.1.1. Define Directory Structure:
src/components/layout: For major layout components like the site header, footer, and navigation.TheHeader.vueTheFooter.vueNavbar.vue
src/components/ui: For small, reusable, generic UI elements.CtaButton.vue(Call-to-action button)BaseCard.vueFormInput.vueSpinner.vue
src/components/views: For components specific to a particular page or view.HomePage/HeroSection.vueServicesPage/ServiceList.vueBlogPage/ArticlePreview.vue
- 2.1.2. Design System & Styling:
- In
tailwind.config.js, define the brand's color palette (coppers, earth tones), fonts, and spacing scale to ensure visual consistency. - Create base styles in
src/assets/main.cssfor typography and overall page appearance.
- In
Task 2.2: Public-Facing Pages & PWA Implementation
These pages will serve as the main entry points for visitors and potential clients. They will be routed using Vue Router.
- 2.2.1. Routing Setup (
src/router/index.ts):- Define routes for the main pages:
const routes = [ { path: '/', name: 'Home', component: () => import('@/views/HomeView.vue') }, { path: '/about', name: 'About', component: () => import('@/views/AboutView.vue') }, { path: '/contact', name: 'Contact', component: () => import('@/views/ContactView.vue') }, // ... other routes ];
- Define routes for the main pages:
- 2.2.2. Home Page (
src/views/HomeView.vue):- Hero Section: A prominent section with the company name, a compelling tagline, and a primary call-to-action (e.g., "Get a Quote", "Our Services").
- Services Overview: A brief showcase of the main service categories.
- Company Intro: A short section introducing Hopoyuksa Tali Lakna / Copper Tone Technologies.
- 2.2.3. About Us Page (
src/views/AboutView.vue):- Company History: Detail the company's background, including its identity as an autochthonous American Indian company.
- Mission & Values: Clearly state the company's mission.
- Team Section: (Optional) Profiles of key team members.
- 2.2.4. Contact Page (
src/views/ContactView.vue):- Contact Form: A form for inquiries (fields: Name, Email, Phone, Message).
- Contact Information: Display the company's physical address, phone number, and email.
- 2.2.5. PWA Implementation:
- Configure
manifest.jsonfor app metadata, icons, and display modes. - Implement a service worker for offline caching of assets and API requests, and enable push notifications (if required).
- Ensure the application is installable on mobile and desktop devices.
- Utilize Helia (IPFS) to enhance content delivery, exploring options for decentralized storage of static assets and potentially dynamic content.
- Configure
Task 2.3: Services Section
This section will dynamically generate pages for each service offered by the company, using Markdown for content management. This allows non-developers to update service information easily.
- 2.3.1. Content Storage:
- Create a directory
public/content/services. - Inside, create Markdown files for each service (e.g.,
network-cabling.md,server-administration.md). - Each file will contain metadata (using "frontmatter") and the service description in Markdown.
--- title: "Network Cabling" icon: "lan-connect" short_description: "Professional installation of Cat5e, Cat6, and fiber optic cabling." --- ## Detailed Service Description We provide end-to-end cabling solutions for businesses of all sizes...
- Create a directory
- 2.3.2. Dynamic Routing:
- Add a dynamic route to Vue Router:
{ path: '/services/:slug', name: 'ServiceDetail', component: () => import('@/views/ServiceDetailView.vue') }.
- Add a dynamic route to Vue Router:
- 2.3.3. Content Rendering:
- In the
ServiceDetailView.vuecomponent, use the route parameter ($route.params.slug) to fetch the corresponding Markdown file. - Use a library like
markdown-itandfront-matterto parse the file content and metadata. - Render the parsed HTML content using
v-html.
- In the
- 2.3.4. Services List Page (
src/views/ServicesView.vue):- This page will fetch all files from
public/content/services, parse their frontmatter, and display a list or grid ofServiceCardcomponents, linking to the detail pages.
- This page will fetch all files from
Task 2.4: Blog/Articles Section
This will function similarly to the Services section, providing a platform for sharing news, insights, and technical articles.
- 2.4.1. Content Storage:
- Create a
public/content/blogdirectory for Markdown article files. - Article frontmatter might include
title,author,date, andtags.
- Create a
- 2.4.2. Routing:
- Add a list page route:
{ path: '/blog', name: 'Blog', component: () => import('@/views/BlogView.vue') }. - Add a detail page route:
{ path: '/blog/:slug', name: 'ArticleDetail', component: () => import('@/views/ArticleDetailView.vue') }.
- Add a list page route:
- 2.4.3. Implementation:
- The implementation will mirror the Services section: fetch content based on route params, parse Markdown and frontmatter, and render it in the appropriate view. The
BlogViewwill list all articles, sorted by date.
- The implementation will mirror the Services section: fetch content based on route params, parse Markdown and frontmatter, and render it in the appropriate view. The