This is a Next.js project that serves as the frontend for the AIPA (AI Personal Assistant) application. It's built with React, TypeScript, and uses Tailwind CSS for styling.
The project follows a typical Next.js structure:
-
/app
: Contains the main application components and pages -
/public
: Static assets - /styles: Global CSS styles
- /services: API and other service functions
- /types: TypeScript type definitions
- package.json: Defines project dependencies and scripts
- next.config.mjs: Next.js configuration
- tailwind.config.ts: Tailwind CSS configuration
- tsconfig.json: TypeScript configuration
- Dockerfile: Instructions for building the Docker image
-
Install dependencies:
npm install
-
Run the development server:
npm run dev
-
Open http://localhost:3000 in your browser to see the result.
The project uses environment variables for configuration. Ensure you have a .env.local
file with the necessary configurations.
Required variables: NEXT_PUBLIC_AIPA_API_URL (url of the API).
The project can be deployed using Docker:
-
Build the Docker image:
docker build -t aipa-frontend .
-
Run the Docker container:
docker run -p 3000:3000 aipa-frontend
The project uses a centralized configuration file for managing application-wide settings. This file is located at:
export const config = {
appName: "AIPA",
title: "AI Personal Assistant",
description: "Your intelligent personal assistant powered by AI",
// Add more configuration settings as needed
};
These settings are used throughout the application to maintain consistency and make it easier to update global values.
The project uses Tailwind CSS for styling. The configuration can be found in:
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
backgroundImage: {
"gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
"gradient-conic":
"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
},
},
},
plugins: [],
};