A Next.js-based proof of concept for implementing Verifiable Credentials in government institutions. This project demonstrates how government agencies can issue, carry, and verify credentials securely with decentralized verification and issuer-checkable status.
This VC PoC enables government institutions to:
- Issue verifiable credentials with cryptographic signatures
- Store credentials securely in citizen wallets
- Verify credentials with decentralized cryptographic proof
- Check credential status (active/revoked) through issuer APIs
- Multi-language Support: English and Spanish internationalization
- Responsive Design: Modern UI with Tailwind CSS
- Form Validation: Contact form with Zod schema validation
- SEO Optimized: JSON-LD structured data for search engines
- Accessibility: WCAG compliant components
- Type Safety: Full TypeScript implementation
- Framework: Next.js 15.4.6 with App Router
- Language: TypeScript
- Styling: Tailwind CSS v4
- Forms: React Hook Form + Zod validation
- Animations: Motion (Framer Motion)
- Icons: Lucide React
- Package Manager: Bun
- Linting: ESLint
- Node.js 18+ or Bun
- Git
- Clone the repository:
git clone <repository-url>
cd vc-poc- Install dependencies:
bun install- Start the development server:
bun dev- Open http://localhost:3000 in your browser
bun dev # Start development server
bun build # Build for production
bun start # Start production server
bun lint # Run ESLint- Build and start the application:
docker-compose up --build-
Access the application at http://localhost:3000
-
Stop the application:
docker-compose down- Build the Docker image:
docker build -t vc-poc .- Run the container:
docker run -p 3000:3000 vc-poc- Access the application at http://localhost:3000
- Multi-stage build: Optimized for production with minimal image size
- Bun runtime: Fast JavaScript runtime for better performance
- Health checks: Built-in health monitoring at
/api/health - Security: Runs as non-root user
- Standalone output: Optimized Next.js standalone build
src/
βββ app/
β βββ [locale]/ # Internationalized routes
β β βββ layout.tsx # Root layout with i18n
β β βββ page.tsx # Home page
β βββ globals.css # Global styles
β βββ layout.tsx # App layout
βββ components/
β βββ forms/ # Form components
β βββ sections/ # Page sections
β βββ ui/ # Reusable UI components
βββ i18n/ # Internationalization config
βββ lib/ # Utility functions
βββ messages/ # Translation files
The application supports multiple languages through Next.js internationalization:
- English (
/en) - Default language - Spanish (
/es) - Secondary language
Translation files are located in src/messages/ and follow a nested JSON structure.
- Hero: Main landing section with call-to-action
- How It Works: Step-by-step process explanation
- Benefits: Benefits for citizens and institutions
- Requirements: Technical requirements for integration
- Standards: W3C VC standards compliance
- FAQ: Frequently asked questions
- Contact Form: Integration request form
- Government CTA: Government-specific call-to-action
- Accordion: Expandable content sections
- Input: Form input with validation
- Pill: Status indicators
- Step: Process step visualization
- Success Box: Success message display
Create a .env.local file for environment-specific configuration:
# Add any environment variables hereThe project uses Tailwind CSS v4 with PostCSS. Configuration is in tailwind.config.js.
- Use TypeScript for all new code
- Follow ESLint configuration
- Use Tailwind CSS for styling
- Implement proper accessibility attributes
- Place reusable components in
src/components/ui/ - Page sections in
src/components/sections/ - Form components in
src/components/forms/
- Add new translations to
src/messages/en.jsonandsrc/messages/es.json - Use the
getDictionaryfunction to access translations - Follow the nested JSON structure for organization
- Connect your repository to Vercel
- Configure environment variables
- Deploy automatically on push to main branch
Build the application:
bun buildStart the production server:
bun start- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is private and proprietary.
Note: This is a proof of concept for government verifiable credentials integration. For production use, ensure proper security audits and compliance with government standards.