# Project export: Nirmaan

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: TreeHacks 2025
- Tagline: Nirmaan aims to empower India’s construction workers with Web3 and provide transparency, fairness, and reliability.
- Devpost: https://devpost.com/software/nirmaan
- GitHub: https://github.com/samarthchandrawat/nirmaan_v1
- Video: https://www.youtube.com/embed/t_uimTOvWuU?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: 4 GitHub contributor(s) — samarth chandrawat (17 commits), Shivoham Angal (9 commits), Kelly Chen (8 commits), Prathmesh Sonawane (6 commits)

## Devpost submission (written by the team)

### Inspiration

More than 60 million construction workers in India face challenges such as wage theft, delayed payments, and limited access to government benefits due to the absence of formal employment records and a lack of awareness about their labor rights. The construction sector remains highly unorganized, allowing middlemen to manipulate wages and siphon off funds intended for worker welfare. After analyzing recent incidents, existing policies, and government welfare initiatives such as the Building and Other Construction Workers (BOCW) Act and the Occupational Safety and Health Administration (OSHA) Act, we recognized the urgent need for an end-to-end framework that ensures labor welfare is accessible while eliminating worker exploitation and unlawful employment practices in the industry. Ensuring financial security and fair treatment for construction workers requires a system that is both transparent and intelligent. Our project, Nirmaan, leverages Blockchain to create tamper-proof employment records, automate payments, and establish decentralized worker identities, eliminating wage manipulation and unauthorized intermediaries. At the same time, AI powers data-driven insights, worker profiling, and policy education enables an efficient allocation of benefits and ensures compliance with labor regulations. Architecture Diagram Diagram What It Does Nirmaan is a blockchain and AI-powered platform that ensures fair wages, secure payments, and labor welfare for construction workers in developing and diverse economies like India. Work Assignment & Secure Payments Assigns work to construction workers, holds payments securely, and tracks assignment details until payment is released or disputed. Work Assignment & Secure Payments Assigns work to construction workers, holds payments securely, and tracks assignment details until payment is released or disputed. Dispute Resolution & Payment Transparency Allows contractors and workers to raise disputes or release payments, with automatic dispute status updates if payments are delayed. Dispute Resolution & Payment Transparency Allows contractors and workers to raise disputes or release payments, with automatic dispute status updates if payments are delayed. Worker Dashboard & Blockchain Integration Provides workers with a clear view of their assigned work and payment history from the blockchain, ensuring transparency and accountability. Worker Dashboard & Blockchain Integration Provides workers with a clear view of their assigned work and payment history from the blockchain, ensuring transparency and accountability. AI Chatbot for Worker Awareness An AI-powered chatbot educates workers on labor rights, government welfare schemes, and dispute resolution, bridging the awareness gap in the sector. AI Chatbot for Worker Awareness An AI-powered chatbot educates workers on labor rights, government welfare schemes, and dispute resolution, bridging the awareness gap in the sector. How We Built It Frontend Development: Utilized React and Next.js for building a responsive and dynamic user interface. Implemented TypeScript for type safety and better code maintainability. Designed UI components using Tailwind CSS for a modern and consistent look and feel. Integrated React Hooks for managing state and side effects in functional components. Backend Development: Developed a RESTful API using Express.js to handle server-side logic and database interactions. Utilized Node.js for building a scalable and efficient backend. Implemented PostgreSQL as the database to store and manage worker and assignment data. Blockchain Integration: Deployed smart contracts on the Sepolia test network for handling payments and assignments. Utilized ethers.js for interacting with the Ethereum blockchain and smart contracts. Developed smart contracts using Solidity to manage worker payments and assignments. Implemented functions for releasing payments and fetching payment history from the blockchain. Ensured secure and efficient transactions by using MetaMask for wallet integration and transaction signing. Conducted thorough testing of smart contracts using Hardhat to ensure correct functionality and security AI Integration: Fine-tuned a model using OpenAI API to provide personalized guidance to workers, helping them navigate the platform and understand their employment records. Integrated AI-driven responses to educate workers on government welfare policies, ensuring they receive relevant and actionable information based on their queries. What's Next for Nirmaan Expanding to other unorgaized labor sectors such as agriculture and domestic work. Integrating NPCI UPI Payments to make the payments to workers faster. Explore partnership opportunities with real-estate agencies/government construction sites to gauge the real world impact. Nirmaan is just the beginning. Our goal is to create the entire ecosystem / framework of transparent, fair, and secure financial system for India’s workforce.

## README (from the GitHub repository)

# Nirmaan – Web3-Powered Wage Security

## Overview
Nirmaan is a Web3-based platform designed to ensure fair wages, instant payments, and transparent work records for India’s construction workers. By leveraging blockchain, smart contracts, and decentralized identity (DID), Nirmaan eliminates wage theft, prevents fraud, and removes middlemen from the payment process. Workers get paid on time, their employment history is securely recorded, and they can access government benefits without bureaucratic delays.


## Architecture
Nirmaan integrates Web3 with real-world financial infrastructure:

- Decentralized Identity (DID): Workers register using Aadhaar, generating an on-chain identity.
- Smart Contracts: Automate wage disbursement and maintain immutable payment logs.
- UPI Integration: Enables instant payouts to verified worker accounts.


## Conclusion
Nirmaan aims to create a fair and transparent wage system for construction workers, eliminating financial exploitation and ensuring seamless access to welfare benefits. By integrating Web3 with real-world financial infrastructure, we hope to drive real social impact. Future plans include expanding to other labor sectors and partnering with government agencies.


# Setup Instructions  

## 1. Install Dependencies  

### Backend  
```sh
cd backend  
npm install
```

### Frontend
```sh
cd frontend
npm install
```

### Server
```sh
cd backend/server
npm install
```

## 2. Running the Application
Open four terminals and follow the steps below

### Terminal 1: Compile and Start Hardhat Local Blockchain
```sh
npx hardhat compile  
npx hardhat node
```

### Terminal 2: Deploy Smart Contracts
```sh
npx hardhat run scripts/deploy.ts --network localhost
```

### Terminal 3: Start the Frontend
```sh
cd frontend  
npm run dev
```

### Terminal 4: Start the Backend Server
```sh
cd backend/server  
node server.js  
```

## 3. Database Setup
### 1. Install PostgreSQL (if not already installed)
```sh
brew install postgresql  
brew services start postgresql
```

## 2. Access PostgreSQL
```sh
psql -U postgres
```

## 3. Create Database & User
```sql
CREATE DATABASE nirmaan;  

CREATE USER nirmaan_admin WITH PASSWORD 'nirmaan123';  
ALTER ROLE nirmaan_admin SET client_encoding TO 'utf8';  
ALTER ROLE nirmaan_admin SET default_transaction_isolation TO 'read committed';  
ALTER ROLE nirmaan_admin SET timezone TO 'UTC';  
GRANT ALL PRIVILEGES ON DATABASE nirmaan TO nirmaan_admin;
```

Exit PostgreSQL:

```sh
\q
```
  
## 4. Connect to the Database
```sh
psql -U nirmaan_admin -d nirmaan
```
 
## 5. Create Tables
Workers Table
```sql
CREATE TABLE workers (  
    id SERIAL PRIMARY KEY,  
    aadhaar_hash TEXT UNIQUE NOT NULL,  
    name TEXT NOT NULL,  
    phone TEXT NOT NULL  
);
```

Payments Table
```sql
CREATE TABLE payments (  
    id SERIAL PRIMARY KEY,  
    worker_id INT REFERENCES workers(id) ON DELETE CASCADE,  
    amount NUMERIC NOT NULL,  
    employer TEXT NOT NULL,  
    transaction_hash TEXT UNIQUE NOT NULL,  
    paid_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  
);
```

Citizens Table
```sql
CREATE TABLE citizens (  
    aadhar_number VARCHAR(12) PRIMARY KEY,  
    full_name VARCHAR(255) NOT NULL,  
    date_of_birth DATE NOT NULL,  
    phone_number VARCHAR(15) UNIQUE NOT NULL  
);
```

Assignments Table
```sql
CREATE TABLE assignments (  
    id SERIAL PRIMARY KEY,  
    contractor_id INT NOT NULL,  
    aadhaar_number VARCHAR(12) NOT NULL,  
    expiration_date DATE NOT NULL,  
    payment NUMERIC(10,2) NOT NULL,  
    status TEXT NOT NULL,  
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  
);  
```


## Detected evidence (automated analysis)

Indexed codebase: 58 recognized source files, 180 KB.
- CSS (language) — detected in the code
- Express (technology) — detected in the code
- JavaScript (language) — detected in the code
- Next.js (technology) — detected in the code
- OpenAI (technology) — detected in the code
- PostgreSQL (technology) — detected in the code
- React (technology) — detected in the code
- Solidity (language) — detected in the code
- Tailwind CSS (technology) — detected in the code
- TypeScript (language) — detected in the code

## Codebase structure (from repository index)

### Files (70 of 70)

```
.DS_Store
.gitignore
backend/contracts/Lock.sol
backend/contracts/SimpleNFT.sol
backend/contracts/WorkerPayments.sol
backend/hardhat.config.ts
backend/ignition/modules/Lock.ts
backend/package.json
backend/scripts/deploy.ts
backend/server/config/db.js
backend/server/package.json
backend/server/routes/paymentRoutes.js
backend/server/routes/workerRoutes.js
backend/server/server.js
backend/test/Lock.ts
backend/test/SimpleNFT.ts
backend/tsconfig.json
docs/1-intro.md
docs/2-frontend.md
docs/3-backend.md
docs/4-deploy.md
docs/5-nft-metadata.md
docs/hardhat.md
docs/sepolia-testnet.md
frontend/.eslintrc.json
frontend/.gitignore
frontend/.npmrc
frontend/next-env.d.ts
frontend/next.config.js
frontend/package.json
frontend/postcss.config.js
frontend/README.md
frontend/src/components/ChatBox.tsx
frontend/src/components/layout.tsx
frontend/src/components/MediationRequest.tsx
frontend/src/components/Navbar.tsx
frontend/src/components/Prompts.tsx
frontend/src/components/ui/button.tsx
frontend/src/components/ui/card.tsx
frontend/src/components/ui/input.tsx
frontend/src/pages/_app.tsx
frontend/src/pages/api/chat.ts
frontend/src/pages/api/mediation.ts
frontend/src/pages/api/zoom-token.ts
frontend/src/pages/assign-work.tsx
frontend/src/pages/assigned-work.tsx
frontend/src/pages/dashboard.tsx
frontend/src/pages/index.tsx
frontend/src/pages/login.tsx
frontend/src/pages/mint.tsx
frontend/src/pages/pay-worker.tsx
frontend/src/pages/payments.tsx
frontend/src/pages/register.tsx
frontend/src/pages/verify-payments.tsx
frontend/src/pages/verify-worker.tsx
frontend/src/pages/verify.tsx
frontend/src/pages/worker-assignments.tsx
frontend/src/pages/worker-profile.tsx
frontend/src/styles/globals.css
frontend/src/styles/Home.module.css
frontend/src/styles/Navbar.module.css
frontend/src/utils/perplexityApi.ts
frontend/src/utils/zoomApi.ts
frontend/src/wagmi.ts
frontend/tailwind.config.js
frontend/tsconfig.json
frontend/utils/api.js
LICENSE
package.json
README.md
```

### Dependencies

- backend/package.json: @nomicfoundation/hardhat-ignition@^0.15.9, @nomicfoundation/hardhat-ignition-viem@^0.15.9, @nomicfoundation/hardhat-network-helpers@^1.0.12, @nomicfoundation/hardhat-toolbox@^5.0.0, @nomicfoundation/hardhat-toolbox-viem@^3.0.0, @nomicfoundation/hardhat-verify@^2.0.12, @nomicfoundation/hardhat-viem@^2.0.6, @nomicfoundation/ignition-core@^0.15.9, @openzeppelin/contracts@^5.2.0, @rainbow-me/rainbowkit@^2.2.3, @tanstack/react-query@^5.55.3, @types/chai@^4.0.0, @types/chai-as-promised@^7.1.8, @types/mocha@^10.0.10, @types/node@^20.14.8, @types/react@^19.0.6, chai@^4.0.0, dotenv@^16.0.3, hardhat@^2.22.0, hardhat-gas-reporter@^1.0.10, next@^15.1.4, react@^19.0.0, react-dom@^19.0.0, solidity-coverage@^0.8.14, ts-node@^10.9.2, typescript@^5.0.0, viem@2.21.55, viem@^2.0.0, wagmi@^2.14.9
- backend/server/package.json: cors@^2.8.5, crypto@^1.0.1, dotenv@^16.4.7, ethers@^6.13.5, express@^4.21.2, pg@^8.13.3
- frontend/package.json: @rainbow-me/rainbowkit@^2.2.3, @shadcn/ui@^0.0.4, @tanstack/react-query@^5.55.3, @types/node@^20.14.8, @types/react@^19.0.6, autoprefixer@^10.4.20, axios@^1.7.9, clsx@^2.1.1, dotenv@^16.0.3, ethers@^5.7.2, lucide-react@^0.475.0, next@^15.1.4, openai@^4.85.1, postcss@^8.5.2, qrcode.react@^4.2.0, react@^19.0.0, react-dom@^19.0.0, react-qr-reader@^3.0.0-beta-1, tailwindcss@^3.4.17, typescript@5.5.2, viem@2.21.55, wagmi@^2.14.9
- package.json: ethers@^6.13.5

### Recent commits (newest first)

- config
- pushing packages
- minor fixes
- minor fixes
- Merge branch 'main' of https://github.com/samarthchandrawat/nirmaan_v1
- minor fixes
- integrated perplexity and tried to add zoom
- Merge branch 'main' of https://github.com/samarthchandrawat/nirmaan_v1
- final touch ups
- Update README.md
- added readme
- raise dispute fixed
- Merge branch 'main' of https://github.com/samarthchandrawat/nirmaan_v1
- changes for worker board
- Merge branch 'main' of https://github.com/samarthchandrawat/nirmaan_v1
- revised chat boxs
- worker assignments
- Updated Worker perms/profile
- changes to assigned workers page
- Merge branch 'main' of https://github.com/samarthchandrawat/nirmaan_v1

## Key source files (fetched from GitHub, selected and truncated for size)

### docs/hardhat.md

```markdown
# Local Development with Hardhat

## What is Hardhat?
Hardhat is a development environment for Ethereum smart contracts. Think of it like a local server for web development, but for blockchain. When you run Hardhat locally, you get:

- A local blockchain network for testing
- Test accounts pre-loaded with ETH
- Instant transaction processing (no waiting!)
- Full control over the network state

## Getting Started

1. Start the local Hardhat network:
```bash
npx hardhat node
```

This command starts a local blockchain at `http://127.0.0.1:8545`. You'll see a list of 20 test accounts with their private keys, each loaded with 10,000 test ETH.

2. Deploy your contracts to the local network. Open a new terminal and run:
```bash
npx hardhat run scripts/deploy.ts --network localhost
```

3. Run tests against your local network:

```bash
npx hardhat test
```


## Understanding Local Development

When you're developing on Hardhat:
- Every transaction is instant
- You don't need real ETH
- You can reset the network state at any time
- You can debug transactions easily

This is perfect for:
- Testing your smart contracts
- Developing your frontend without spending real ETH
- Debugging complex contract interactions
- Running automated tests

## Connecting Your Frontend

To connect your frontend (like MetaMask) to your local Hardhat network:

1. Add Hardhat Network to MetaMask:
   - Network Name: Hardhat
   - RPC URL: http://127.0.0.1:8545
   - Chain ID: 31337
   - Currency Symbol: ETH

2. Import a test account:
   - Copy a private key from the Hardhat node output
   - Import into MetaMask using "Import Account"

## Common Commands

- `npx hardhat node`: Start the local Hardhat network
- `npx hardhat run scripts/deploy.ts --network localhost`: Deploy contracts to the local network
- `npx hardhat compile`: Compile contracts
- `npx hardhat test`: Run tests against the local network

## Tips for Development
- Always restart your Hardhat node if you make contract changes
- Use `console.log()` in your contracts for debugging (import "hardhat/console.sol")
- Keep the node terminal open to see transaction logs
- Remember that each Hardhat node restart resets the blockchain state
```

### docs/1-intro.md

```markdown
# Anatomy of an Ethereum DApp

## What is a DApp?

A DApp (Decentralized Application) is a software application that runs on a distributed computing system - typically a blockchain network like Ethereum. Unlike traditional web applications that run on centralized servers, DApps operate on a peer-to-peer network of computers.

Here's a contrast between the infrastructure of a traditional web application and a DApp:

![web2](./img/1-web2-app.png)

A traditional web application has two main components - (1) a user-facing frontend and (2) a backend server API. To log in an application, the user might use an OAuth provider like Google or Facebook.


![web3](./img/1-web3-dapp.png)

A DApp, on the other hand, has three main components - (1) a user-facing frontend, (2) a traditional API server (sometimes), and (3) a smart contract "backend" that runs on a blockchain network like Ethereum.

Instead of using OAuth providers to log in, a DApp uses a "wallet connector", such as RainbowKit, MetaMask, or Coinbase Wallet to log the user into the application.

The user can then interact with the application like a normal web application through the frontend and API server. However, if the user wants to interact with the blockchain "backend", they will need an RPC provider, which is a service that queries the blockchain and returns data to the user.

When we're simply reading data from the blockchain and sending transactions, we can use a library like Wagmi/Viem or ethers.js to handle all of the transactions for us. However, if we want to actually deploy and interact with smart contracts, we will need to use a tool like Hardhat, as well as manually find an RPC provider such as Alchemy or Infura to deploy and interact with our smart contracts.


## Project Structure

Because of this, a typicall DApp project will have a structure that looks like this:

```
treehouse-dapp/
├── backend/ # Smart contract & deployment code
| |
│ ├── contracts/ # Solidity smart contracts
│ │ ├── Lock.sol # Basic lock contract
│ │ └── SimpleNFTSale.sol # NFT contract
│ ├── scripts/ # Contract deployment scripts
│ ├── test/ # Contract test files
│ ├── ignition/ # Hardhat Ignition deployment modules
│ ├── hardhat.config.ts # Hardhat configuration
│ └── package.json # Backend dependencies
|
└── frontend/ # Next.js frontend application
    ├── src/
    │ ├── components/ # React components
    │ ├── pages/ # Next.js pages
    │ ├── styles/ # CSS modules
    │ └── wagmi.ts # Wagmi configuration
    └── package.json # Frontend dependencies
```

## Tech Stack

As of Feb 2025, one of the most popular tech stacks for building DApps is the following:

- **TypeScript Frontend**
  - Next.js - React framework
  - RainbowKit - Wallet connection
  - Wagmi - Ethereum hooks
  - Viem - Ethereum utilities

- **Smart Contract Backend**
  - Hardhat - Development environment
  - OpenZeppelin - Misc Contract libraries
  - Viem - Ethereum utilities and deployment
  - Infura - RPC provider

The blockchain space m
[truncated — 532 more characters]
```

### package.json

```
{
  "dependencies": {
    "ethers": "^6.13.5"
  }
}

```

### frontend/package.json

```
{
  "name": "treehacks-dapp",
  "private": true,
  "version": "0.1.0",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "@rainbow-me/rainbowkit": "^2.2.3",
    "@shadcn/ui": "^0.0.4",
    "@tanstack/react-query": "^5.55.3",
    "axios": "^1.7.9",
    "clsx": "^2.1.1",
    "ethers": "^5.7.2",
    "lucide-react": "^0.475.0",
    "next": "^15.1.4",
    "openai": "^4.85.1",
    "qrcode.react": "^4.2.0",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "react-qr-reader": "^3.0.0-beta-1",
    "viem": "2.21.55",
    "wagmi": "^2.14.9"
  },
  "devDependencies": {
    "@types/node": "^20.14.8",
    "@types/react": "^19.0.6",
    "autoprefixer": "^10.4.20",
    "dotenv": "^16.0.3",
    "postcss": "^8.5.2",
    "tailwindcss": "^3.4.17",
    "typescript": "5.5.2"
  },
  "description": "This is a simple Ethereum transfer application built for the TreeHacks Web3 Workshop. The project demonstrates how to build a basic decentralized application using modern Web3 tools and frameworks.",
  "main": "next.config.js",
  "keywords": [],
  "author": "",
  "license": "ISC"
}

```

### backend/package.json

```
{
  "name": "treehacks-dapp",
  "private": true,
  "version": "0.1.0",
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  },
  "dependencies": {
    "@openzeppelin/contracts": "^5.2.0",
    "@rainbow-me/rainbowkit": "^2.2.3",
    "@tanstack/react-query": "^5.55.3",
    "next": "^15.1.4",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "viem": "2.21.55",
    "wagmi": "^2.14.9"
  },
  "devDependencies": {
    "@nomicfoundation/hardhat-ignition": "^0.15.9",
    "@nomicfoundation/hardhat-ignition-viem": "^0.15.9",
    "@nomicfoundation/hardhat-network-helpers": "^1.0.12",
    "@nomicfoundation/hardhat-toolbox": "^5.0.0",
    "@nomicfoundation/hardhat-toolbox-viem": "^3.0.0",
    "@nomicfoundation/hardhat-verify": "^2.0.12",
    "@nomicfoundation/hardhat-viem": "^2.0.6",
    "@nomicfoundation/ignition-core": "^0.15.9",
    "@types/chai": "^4.0.0",
    "@types/chai-as-promised": "^7.1.8",
    "@types/mocha": "^10.0.10",
    "@types/node": "^20.14.8",
    "@types/react": "^19.0.6",
    "chai": "^4.0.0",
    "dotenv": "^16.0.3",
    "hardhat": "^2.22.0",
    "hardhat-gas-reporter": "^1.0.10",
    "solidity-coverage": "^0.8.14",
    "ts-node": "^10.9.2",
    "typescript": "^5.0.0",
    "viem": "^2.0.0"
  }
}

```

### backend/server/package.json

```
{
  "name": "server",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "cors": "^2.8.5",
    "crypto": "^1.0.1",
    "dotenv": "^16.4.7",
    "ethers": "^6.13.5",
    "express": "^4.21.2",
    "pg": "^8.13.3"
  }
}

```

### backend/server/server.js

```javascript
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const workerRoutes = require('./routes/workerRoutes');
const paymentRoutes = require("./routes/paymentRoutes");

const app = express();
app.use(express.json());
app.use(cors());

app.use('/api', workerRoutes);
app.use("/api", paymentRoutes);

const PORT = 5001; // Running separate from Web3 backend
app.listen(PORT, () => console.log(`Express API running on port ${PORT}`));

```

### frontend/src/pages/index.tsx

```typescript
import Head from "next/head";
import { useRouter } from "next/router";

export default function Home() {
  const router = useRouter();

  return (
    <div className="h-screen flex flex-col justify-center bg-gradient-to-br from-blue-500 to-purple-600">
      <Head>
        <title>Login - Choose Your Role</title>
        <meta name="description" content="Select whether to login as a Worker or Contractor" />
        <link rel="icon" href="/favicon.ico" />
      </Head>

      <div className="text-center "> {/* Adjusted margin-top here */}
        {/* Welcome Heading */}
        <h1 className="text-white text-4xl font-bold mb-8">Welcome to Nirmaan</h1>
        
        {/* Role Selection Heading */}
        <h2 className="text-white text-2xl font-bold mb-8">Choose Your Role</h2>
        
        <div className="space-y-4">
          <button
            className="px-6 py-3 bg-white text-blue-600 font-semibold rounded-lg shadow-md transition hover:bg-gray-200"
            onClick={() => router.push("/login?role=worker")}
          >
            Login as Worker
          </button>
          <br />
          <button
            className="px-6 py-3 bg-white text-purple-600 font-semibold rounded-lg shadow-md transition hover:bg-gray-200"
            onClick={() => router.push("/login?role=contractor")}
          >
            Login as Contractor
          </button>
        </div>
      </div>
    </div>
  );
}

```

### frontend/postcss.config.js

```javascript
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}

```

### frontend/next-env.d.ts

```typescript
/// <reference types="next" />
/// <reference types="next/image-types/global" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.

```

[50 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]