A modern web application showcasing business credit card products for Three Rivers Bank, built with React frontend and Spring Boot backend, integrating with BIAN API v13.0.0 standards.
This project demonstrates a full-stack credit card comparison and information platform designed for small businesses. The application provides an intuitive interface for browsing, comparing, and learning about various business credit card offerings from Three Rivers Bank.
- Framework: React 18+ with Vite
- Routing: React Router v6
- State Management: React Query (TanStack Query)
- UI Library: Material-UI (MUI)
- Styling: Custom Three Rivers Bank theme (Navy/Teal)
- Framework: Spring Boot 3.x
- Language: Java 17+
- Database: H2 In-Memory Database
- API Integration: BIAN Credit Card API v13.0.0 (Swagger Hub Mock)
- Resilience: Resilience4j Circuit Breaker
- API Client: Spring Cloud OpenFeign
- Caching: Spring Cache Abstraction
- Containerization: Docker
- Registry: Azure Container Registry
- Deployment: Azure Container Apps
- CI/CD: GitHub Actions
- 5 Business Credit Cards:
- Business Cash Rewards (2% cashback, $0 annual fee)
- Business Travel Rewards (3X points, $95 annual fee)
- Business Platinum (0% intro APR 15 months, $0 annual fee)
- Business Premium (1.5% unlimited cashback, $150 annual fee)
- Business Flex (Tiered 3%-1% rewards, $0 annual fee)
- Side-by-side comparison table
- Advanced filtering (annual fee, APR, rewards type, card type)
- Sorting capabilities
- Responsive design for all devices
- Hero section with card imagery
- Quick facts card (APR, fees, rewards)
- Detailed features accordion
- Benefits showcase
- Fee schedules
- Interest rate information
- Expense management tools
- Employee card controls
- QuickBooks integration
- Receipt capture mobile app
- Travel insurance & purchase protection
agentic-devops-demo/
βββ backend/ # Spring Boot application
β βββ src/
β β βββ main/
β β β βββ java/com/threeriversbank/
β β β β βββ controller/ # REST controllers
β β β β βββ service/ # Business logic
β β β β βββ repository/ # JPA repositories
β β β β βββ model/
β β β β β βββ entity/ # JPA entities
β β β β β βββ dto/ # Data transfer objects
β β β β βββ client/ # BIAN API Feign client
β β β β βββ config/ # Configuration classes
β β β βββ resources/
β β β βββ application.yml # App configuration
β β β βββ data.sql # H2 seed data
β β βββ test/ # JUnit tests
β βββ pom.xml # Maven dependencies
β
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable components
β β β βββ cards/ # Card-related components
β β β βββ common/ # Shared UI components
β β β βββ layout/ # Layout components
β β βββ pages/ # Page components
β β β βββ HomePage.jsx
β β β βββ CardComparisonPage.jsx
β β β βββ CardDetailsPage.jsx
β β βββ services/ # API service layer
β β βββ hooks/ # Custom React hooks
β β βββ theme.js # MUI theme configuration
β β βββ App.jsx # Root component
β βββ package.json # npm dependencies
β βββ vite.config.js # Vite configuration
β
βββ tests/
β βββ e2e/ # Playwright E2E tests
β β βββ card-comparison.spec.ts
β β βββ card-details.spec.ts
β β βββ filters-and-sorting.spec.ts
β β βββ responsive-design.spec.ts
β β βββ database-integration.spec.ts
β βββ fixtures/ # Test data fixtures
β β βββ credit-cards.json
β βββ screenshots/ # Visual regression baselines
β βββ baseline/
β
βββ .github/
β βββ workflows/
β β βββ deploy.yml # CI/CD pipeline
β βββ prompts/
β βββ plan-threeRiversBankCreditCardWebsite.prompt.md
β
βββ docker/
β βββ backend.Dockerfile
β βββ frontend.Dockerfile
β
βββ README.md
GET /api/cards- List all credit cards with filtering/sortingGET /api/cards/{id}- Get detailed card informationGET /api/cards/{id}/fees- Get card fee scheduleGET /api/cards/{id}/interest- Get interest rate detailsGET /api/cards/{id}/transactions- Get sample transactions (BIAN)
GET /actuator/health- Health check endpointGET /swagger-ui.html- OpenAPI/Swagger documentationGET /h2-console- H2 database console (dev only)
- CreditCard: Core card information (name, type, APR, fees, rewards)
- CardFeature: Individual card features and benefits
- FeeSchedule: Detailed fee structure per card
- InterestRate: Interest rate configurations and history
Integrates with BIAN Credit Card API v13.0.0 via Swagger Hub mock server:
- Base URL:
https://virtserver.swaggerhub.com/B154/BIAN/CreditCard/13.0.0 - Endpoints Used:
/CreditCard/{id}/Retrieve/CreditCard/{id}/CardTransaction/{txid}/Retrieve/CreditCard/{id}/Billing/{billingid}/Retrieve
- Circuit breaker pattern (Resilience4j)
- Retry logic: 3 attempts, 5s timeout
- Fallback to H2 data on BIAN API failure
- Response caching: 5min (transactions), 1hr (billing)
- Backend: Java 17+, Maven 3.8+
- Frontend: Node.js 18+, npm 9+
- Testing: Playwright (installed via npm)
cd backend
mvn clean install
mvn spring-boot:runBackend runs on http://localhost:8080
cd frontend
npm install
npm run devFrontend runs on http://localhost:5173
Access H2 database console at http://localhost:8080/h2-console
- JDBC URL:
jdbc:h2:mem:creditcards - Username:
sa - Password: (empty)
cd backend
mvn testTests include:
CreditCardServiceTest.java- Service layer with H2 queriesCreditCardControllerTest.java- REST API with MockMvcCreditCardRepositoryTest.java- JPA repository validationBianApiClientTest.java- BIAN API integration with WireMock
cd tests
npm install
npx playwright install
npx playwright testE2E tests cover:
- Card comparison functionality
- Card detail pages
- Filters and sorting
- Responsive design (3 viewports)
- Database integration
- Visual regression
- Accessibility (WCAG 2.1 AA)
Test Configuration:
- Browsers: Chromium, WebKit
- Viewports: Desktop (1920x1080), Tablet (768x1024), Mobile (375x667)
- Parallel execution enabled
# Backend
docker build -f docker/backend.Dockerfile -t threeriversbank/backend:latest ./backend
# Frontend
docker build -f docker/frontend.Dockerfile -t threeriversbank/frontend:latest ./frontend# Backend
docker run -p 8080:8080 threeriversbank/backend:latest
# Frontend
docker run -p 80:80 threeriversbank/frontend:latest- Backend: 0.5 vCPU, 1GB RAM
- Frontend: 0.25 vCPU, 0.5GB RAM
- Ingress: HTTPS-only with custom domain support
- Health Checks:
/actuator/health
BIAN_API_URL: BIAN API base URLH2_CONSOLE_ENABLED: Enable/disable H2 console (false in prod)LOGGING_LEVEL: Application logging level (INFO)
GitHub Actions workflow (.github/workflows/deploy.yml) automatically:
- Builds React frontend
- Builds Spring Boot backend
- Runs JUnit tests
- Runs Playwright E2E tests
- Creates Docker images
- Pushes to Azure Container Registry
- Deploys to Azure Container Apps
Three Rivers Bank Theme:
- Primary Color: Navy Blue (#003366)
- Secondary Color: Teal (#008080)
- Logo: Three Rivers Bank corporate logo
- Typography: Roboto (Material-UI default)
Contact Information:
- Phone: 1-800-THREE-RB
- Email: business@threeriversbank.com
- Headquarters: Pittsburgh, PA
This project is for demonstration purposes.
This is a demonstration project. For questions or feedback, please contact the repository owner.
Built with β€οΈ for Three Rivers Bank