Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
a0cd018
#35 Initialize Angular 21 frontend project
daniel-samson Dec 8, 2025
59c26c1
#35 Add Zard UI integration and build cryptocurrency tracker components
daniel-samson Dec 8, 2025
26664c6
#35 Fix Vitest configuration and template syntax
daniel-samson Dec 8, 2025
79defa8
#35 Add comprehensive README documentation
daniel-samson Dec 8, 2025
425222c
#35 Replicate Nuxt frontend components and design system
daniel-samson Dec 8, 2025
ee6829f
#35 Fix Vitest setup to use ng test command and update Tailwind to v4
daniel-samson Dec 8, 2025
626bcf0
#35 Implement environment variable configuration for API base URL
daniel-samson Dec 8, 2025
dde5b2a
#35 Fix TypeScript strict mode errors in coin-detail component
daniel-samson Dec 8, 2025
5e66e64
#35 Integrate Zard UI component library for proper styling
daniel-samson Dec 8, 2025
f1fdf18
#35 Fix TypeScript compatibility issues in Zard UI components
daniel-samson Dec 8, 2025
6b76edf
#35 Fix environment configuration and app template routing
daniel-samson Dec 8, 2025
922bcaf
#35 Configure CORS to accept Angular frontend requests
daniel-samson Dec 8, 2025
91c2bbc
#35 Fix slow page loading and rendering performance issues
daniel-samson Dec 8, 2025
be963a1
#35 Fix CSS styling - add utility classes for custom theme colors
daniel-samson Dec 8, 2025
bf0e7b1
#35 Fix CSS styling with Tailwind v4 configuration
daniel-samson Dec 8, 2025
ad47a46
#35 Replace custom SVG icons with lucide icons in theme toggle
daniel-samson Dec 8, 2025
1ecc8c5
#35 Update theme toggle to use lucide-angular icon components
daniel-samson Dec 8, 2025
16eec1b
#35 Add lucide-angular icons to theme toggle with primary color
daniel-samson Dec 8, 2025
b354521
#35 Update lucide-angular icon implementation to use documented prope…
daniel-samson Dec 8, 2025
267d0cb
#35 Add lucide-angular icon registration with LucideAngularModule.pick()
daniel-samson Dec 8, 2025
9db336a
#35 Fix lucide-angular icon rendering with proper properties
daniel-samson Dec 8, 2025
3c0ea0c
#35 Register lucide-angular icons and fix element selector
daniel-samson Dec 8, 2025
eb36b69
#35 Update theme colors to match Nuxt frontend with blue primary
daniel-samson Dec 8, 2025
d151e8c
#35 Fix dark mode toggle styling and z-index layering
daniel-samson Dec 8, 2025
bfd806f
#35 Fix card hover styling to display blue ring on standard HTML element
daniel-samson Dec 8, 2025
7845ce9
#35 Fix card hover ring to display blue color using custom CSS
daniel-samson Dec 8, 2025
bb4254b
#35 Reduce card padding and margins for more compact layout
daniel-samson Dec 8, 2025
67dfdcb
#35 Fix loading spinner to display blue border using custom CSS
daniel-samson Dec 8, 2025
f226d7a
#35 Fix footer positioning by making main content flex-1
daniel-samson Dec 8, 2025
0d8c266
#35 Refactor coin detail view to match Nuxt layout
daniel-samson Dec 8, 2025
14b8078
#35 Reduce padding on coin detail cards
daniel-samson Dec 8, 2025
5bdd536
#35 Reduce padding in coin detail cards
daniel-samson Dec 8, 2025
1bb4f1d
#35 Reduce vertical spacing in coin detail cards
daniel-samson Dec 8, 2025
6b2bc15
#35 Fix coin image loading from object to string URL
daniel-samson Dec 8, 2025
4da0529
#35 Add breadcrumb navigation to coin detail page
daniel-samson Dec 8, 2025
57999e2
#35 Remove z-card wrapper from search results table
daniel-samson Dec 8, 2025
526e34c
#35 Remove unused ZardCardComponent import from search component
daniel-samson Dec 8, 2025
8e2753a
#35 Add 'Action' header to search results table
daniel-samson Dec 8, 2025
e1f09be
#35 Remove border styling from table rows
daniel-samson Dec 8, 2025
5a5f7be
#35 Remove border from table header
daniel-samson Dec 8, 2025
b8294e2
#35 Update table markup to use attribute syntax with standard HTML el…
daniel-samson Dec 8, 2025
5e7bc1a
#35 Fix table cell alignment by standardizing padding
daniel-samson Dec 8, 2025
590c512
#35 Add styling verification requirement to CLAUDE.md
daniel-samson Dec 8, 2025
3f226d4
#35 Add reminder about different dev server URLs for both frontends
daniel-samson Dec 8, 2025
61b8ea6
#35 Fix table cell alignment by applying correct font-weight styling
daniel-samson Dec 8, 2025
dbeba42
#35 Add table-layout-fixed for consistent column alignment
daniel-samson Dec 8, 2025
9db65cb
#35 Remove template element wrapping when using attribute selectors
daniel-samson Dec 8, 2025
a815a00
#35 Change View Details button to secondary style
daniel-samson Dec 8, 2025
27369ef
#35 Create reusable LoadingSpinnerComponent and standardize loading s…
daniel-samson Dec 8, 2025
4d0d602
#35 Add Angular frontend documentation and update main README with bo…
daniel-samson Dec 8, 2025
6269ef8
#35 Add GitHub Actions workflow for Angular frontend CI/CD
daniel-samson Dec 8, 2025
90b6382
#35 Add Angular frontend CI badge to main README
daniel-samson Dec 8, 2025
a7035ed
#35 Fix Angular frontend CI workflow test commands
daniel-samson Dec 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions .github/workflows/frontend-ng-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
name: Frontend Angular CI

on:
push:
branches:
- main
- develop
- feature/**
- epic/**
paths:
- 'front-end-ng/**'
- '.github/workflows/frontend-ng-ci.yml'
pull_request:
branches:
- main
- develop
paths:
- 'front-end-ng/**'
- '.github/workflows/frontend-ng-ci.yml'

jobs:
test:
runs-on: ubuntu-latest
name: Test Angular Frontend

strategy:
matrix:
node-version: [20.x]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: 'front-end-ng/package-lock.json'

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y build-essential python3

- name: Install dependencies
working-directory: front-end-ng
run: npm ci

- name: Ensure all native bindings are installed
working-directory: front-end-ng
run: npm install @oxc-parser/binding-linux-x64-gnu @oxc-transform/binding-linux-x64-gnu @oxc-minify/binding-linux-x64-gnu @rollup/rollup-linux-x64-gnu --no-save 2>&1 || true

- name: Clean build cache
working-directory: front-end-ng
run: rm -rf .angular dist node_modules/.vite 2>/dev/null || true

- name: Run tests
working-directory: front-end-ng
run: npm test
env:
CI: true

- name: Generate coverage report
working-directory: front-end-ng
run: npm run test:coverage || true
env:
CI: true

- name: Build application
working-directory: front-end-ng
run: npm run build

code-quality:
runs-on: ubuntu-latest
name: Code Quality Check

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
cache: 'npm'
cache-dependency-path: 'front-end-ng/package-lock.json'

- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y build-essential python3

- name: Install dependencies
working-directory: front-end-ng
run: npm ci

- name: Ensure all native bindings are installed
working-directory: front-end-ng
run: npm install @oxc-parser/binding-linux-x64-gnu @oxc-transform/binding-linux-x64-gnu @oxc-minify/binding-linux-x64-gnu @rollup/rollup-linux-x64-gnu --no-save 2>&1 || true

- name: Clean build cache
working-directory: front-end-ng
run: rm -rf .angular dist node_modules/.vite 2>/dev/null || true

- name: Check for security vulnerabilities
working-directory: front-end-ng
run: npm audit --audit-level=high || true

- name: Verify no console errors in build
working-directory: front-end-ng
run: npm run build

test-summary:
runs-on: ubuntu-latest
name: Test Results Summary
if: always()
needs: [test, code-quality]

steps:
- name: Check test status
run: |
if [ "${{ needs.test.result }}" == "failure" ]; then
echo "❌ Angular frontend tests failed"
exit 1
fi
if [ "${{ needs.code-quality.result }}" == "failure" ]; then
echo "❌ Code quality checks failed"
exit 1
fi
echo "✅ All Angular frontend checks passed"
123 changes: 102 additions & 21 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,63 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

**Cryptobro** is a monorepo cryptocurrency price tracking application with:
- **Backend**: Laravel 12 REST API that fetches cryptocurrency prices from the CoinGecko API
- **Frontend**: Nuxt application (not yet implemented) that will communicate with the backend
- **Frontend**: Two separate frontend implementations:
- **front-end/**: Nuxt 3 (Vue.js 3) - planned
- **front-end-ng/**: Angular 21 (current active frontend)

Current branch: `feature/#5-setup-frontend` - setting up the Nuxt frontend.
Current branch: `epic/angular-front-end` - developing the Angular frontend.

## Frontend Architecture

### Technology Stack
**Note**: This project has two frontend implementations. Choose based on the branch/directory you're working in.

### Angular Frontend (front-end-ng/) - CURRENT

#### Technology Stack
- **Framework**: Angular 21 (Standalone Components)
- **UI Components**: ZardUI with custom components
- **Styling**: Tailwind CSS v4 with CSS variables for theming
- **Component Library**: Class Variance Authority (CVA) for styled variants
- **Build Tool**: Vite with Angular Compiler
- **Type Safety**: TypeScript
- **State Management**: RxJS Observables
- **Routing**: Angular Router

### Nuxt Frontend (front-end/) - PLANNED

#### Technology Stack
- **Framework**: Nuxt 3 (Vue.js 3)
- **UI Components**: shadcn/vue with Radix Vue primitives
- **Styling**: Tailwind CSS with CSS variables for theming
- **Testing**: Vitest + Vue Test Utils
- **Build Tool**: Vite
- **Type Safety**: TypeScript

### Directory Structure
### Angular Frontend - Directory Structure (front-end-ng/)
```
src/
├── app/
│ ├── pages/ # Page components (routed)
│ ├── shared/
│ │ └── components/ # Shared UI components (table, card, breadcrumb, etc.)
│ ├── services/ # Services (CoinGeckoService, etc.)
│ ├── models/ # TypeScript interfaces and types
│ └── app.component.ts # Root component
├── styles.css # Global styles and Tailwind
└── main.ts # Application entry point
```

### Angular Frontend - Common Development Commands
```bash
cd front-end-ng
npm install # Install dependencies
npm start # Start dev server (http://localhost:4200)
npm run build # Build for production
npm run test # Run tests
npm run lint # Run ESLint
```

### Nuxt Frontend - Directory Structure (front-end/)
- `pages/` - Page components (auto-routed)
- `components/ui/` - shadcn/vue components (Button, Card, etc.)
- `app/composables/` - Vue 3 composables for API and logic reuse
Expand All @@ -29,23 +71,7 @@ Current branch: `feature/#5-setup-frontend` - setting up the Nuxt frontend.
- `public/` - Static assets including favicons
- `tests/` - Unit and component tests

### Key Features
- **Responsive Design**: Mobile-first approach with Tailwind breakpoints
- **Component Library**: shadcn/vue provides accessible, themeable components
- **API Integration**: `useCoinGecko` composable handles backend communication
- **Tailwind CSS**: Utility-first CSS with custom color system via CSS variables
- **Dark Mode Ready**: CSS variables support light/dark theme switching
- **TypeScript**: Full type safety throughout the application
- **Tests**: Unit tests for composables, component tests for pages
- **CI/CD**: GitHub Actions workflow runs on frontend file changes

### Environment Variables
```
# Backend API configuration
NUXT_PUBLIC_API_BASE_URL=http://localhost:8000
```

### Common Development Commands
### Nuxt Frontend - Common Development Commands
```bash
cd front-end
npm install # Install dependencies
Expand All @@ -58,6 +84,61 @@ npm run type-check # Check TypeScript types
npm run lint # Run ESLint
```

### Angular Frontend - Environment Variables
```
# Backend API configuration (in src/main.ts or environment.ts)
API_BASE_URL=http://localhost:8000
```

### Nuxt Frontend - Environment Variables
```
# Backend API configuration
NUXT_PUBLIC_API_BASE_URL=http://localhost:8000
```

### Key Features (Angular Frontend)
- **Standalone Components**: Modern Angular architecture without NgModules
- **ZardUI Components**: Custom reusable UI components with CVA styling
- **RxJS**: Reactive programming with Observables for state management and API calls
- **Responsive Design**: Mobile-first approach with Tailwind breakpoints
- **TypeScript**: Full type safety throughout the application
- **Tailwind CSS v4**: Utility-first CSS with custom color system via CSS variables
- **Dark Mode Ready**: CSS variables support light/dark theme switching

### Key Features (Nuxt Frontend)
- **Responsive Design**: Mobile-first approach with Tailwind breakpoints
- **Component Library**: shadcn/vue provides accessible, themeable components
- **API Integration**: `useCoinGecko` composable handles backend communication
- **Tailwind CSS**: Utility-first CSS with custom color system via CSS variables
- **Dark Mode Ready**: CSS variables support light/dark theme switching
- **TypeScript**: Full type safety throughout the application
- **Tests**: Unit tests for composables, component tests for pages
- **CI/CD**: GitHub Actions workflow runs on frontend file changes

### Development Server URLs

**IMPORTANT**: Remember which frontend you're working on - they run on different ports:
- **Angular frontend (front-end-ng/)**: http://localhost:4200
- **Nuxt frontend (front-end/)**: http://localhost:3000

Always verify you're testing on the correct port for the branch/directory you're in.

### Styling and Component Development

**IMPORTANT**: When modifying Tailwind CSS styles or component variants (CVA):
1. Always take a screenshot of the rendered component after making style changes
2. Verify that the changes render correctly in the browser at the correct dev server URL
3. Check alignment, spacing, colors, and interactive states (hover effects)
4. Do NOT assume changes are correct without visual verification

This applies especially to:
- Table layouts and cell alignment
- Card padding and spacing
- Component hover states and transitions
- Responsive breakpoint changes

Test changes on the appropriate dev server before committing.

### Component System (shadcn/vue)

shadcn/vue components are built on:
Expand Down
Loading