Billify is a billing system designed to help small businesses manage their invoicing, customers, and products efficiently. It provides a user-friendly interface for creating invoices, tracking payments, and generating reports.
Check out a live demo of Billify here.
This project utilizes a range of modern frameworks, languages, and tools:
- Typescript: Programming Language
- NextJS: Web Framework
- Tailwind: CSS Framework
- Prisma: ORM
- PostgreSQL: Database
- NextAuth: Authentication
- Shadcn: UI Library
- ReactQuery: Data Fetching
- Zod: Typescript schema validation
- html-to-image and jsPDF: PDF Generation
- User Management: Allows business owners to register accounts and manage user roles.
- Customer Management: Enables users to create, view, update, and delete customer information.
- Product Management: Provides tools for managing products or services offered by the business.
- Invoicing: Allows users to generate invoices, add line items, calculate totals, and specify payment terms.
- PDF Generation: Generates PDF invoices from bill details for easy sharing and printing.
- Security: Ensures secure authentication and authorization mechanisms to protect sensitive data.
- Responsive Design: Offers a responsive and accessible interface for managing bills on various devices.
- Email Notifications: Sends automated email notifications for invoice generation, updates, and payment reminders.
- Dashboard: Displays a summary of total sales and revenue on the dashboard.
Before you begin, ensure you have met the following requirements:
-
Installation: Clone the repository and install dependencies using
npm install
.git clone https://github.com/uttam-li/billify.git cd billify npm install
-
Database Setup: Set up your database and configure the connection in the
.env
file.As an example, you can use Docker to run a PostgreSQL database:
docker run --name PostgreSQL_DB -e POSTGRES_PASSWORD=password -e POSTGRES_DB=billify -d -p 5432:5432 docker.io/postgres
This command will start a PostgreSQL database with the following credentials:
- Username:
postgres
- Password:
password
Then, specify the database URL in your
.env
file:DATABASE_URL="postgresql://postgres:password@localhost:5432/billify"
- Username:
-
Environment Setup: Define all the necessary variables in your
.env
file.# For development NEXTAUTH_URL="http://localhost:3000" # For production (replace 'your-hosted-url' with your actual hosted URL, and 'your-nextauth-secret with a secret) NEXTAUTH_URL="your-hosted-url" NEXTAUTH_SECRET="your-nextauth-secret" # Obtain all the secrets from the respective providers GOOGLE_ID="<Your Google ID>" GOOGLE_SECRET="<Your Google Secret>" GITHUB_ID="<Your GitHub ID>" GITHUB_SECRET="<Your GitHub Secret>"
-
Launch the Application: Start the development server using the following command:
# Ensure you are in the root directory of the project npm run dev
-
Access the Application: Once the server is running, you can access the Billify application in your web browser.
Visit http://localhost:3000 to view your local instance of the application.