Getting Started
Follow these steps to get Personal CRM up and running on your local machine. This guide covers installation, environment configuration, and an overview of the basic usage flow.
Installation
Clone the repository and install all dependencies:
git clone <repository-url> personal-crm && cd personal-crm
composer install
npm install
After running php artisan serve, access the application at http://localhost:8000 for the landing page or http://localhost:8000/app for the admin panel.
Make sure you have PHP 8.2+, Composer 2.x, Node.js 18+, and MySQL 8.0+ (or MariaDB 10.3+) installed before starting the installation.
Configuration
Once the environment file is created, configure the following:
- Set your database credentials (
DB_HOST,DB_DATABASE,DB_USERNAME,DB_PASSWORD) in the.envfile. - Configure Stripe keys from your Stripe Dashboard (Developers > API keys):
STRIPE_KEY,STRIPE_SECRET,STRIPE_WEBHOOK_SECRET. - Set up a Stripe webhook endpoint pointing to
/stripe/webhookwith events:customer.subscription.created,customer.subscription.updated,customer.subscription.deleted,invoice.payment_succeeded. - Configure mail settings for transactional emails (contact form, notifications).
- Set
APP_ENV=productionandAPP_DEBUG=falsefor production deployments. - Optionally configure Sentry DSN for error monitoring.
- Optionally configure AWS S3 credentials for file storage.
Environment Variables
- Name
APP_NAME- Type
- string
- Description
Application display name. Default:
Personal CRM
- Name
APP_ENV- Type
- string
- Description
Application environment (local, staging, production). Default:
local
- Name
APP_KEY- Type
- string
- Description
Encryption key, generated via
php artisan key:generate.
- Name
APP_DEBUG- Type
- boolean
- Description
Enable debug mode. Disable in production. Default:
true
- Name
APP_URL- Type
- string
- Description
Base URL of the application. Default:
http://localhost
- Name
DB_CONNECTION- Type
- string
- Description
Database driver. Default:
mysql
- Name
DB_HOST- Type
- string
- Description
Database server hostname. Default:
127.0.0.1
- Name
DB_PORT- Type
- string
- Description
Database server port. Default:
3306
- Name
DB_DATABASE- Type
- string
- Description
Database name. Default:
personal_crm
- Name
DB_USERNAME- Type
- string
- Description
Database user. Default:
root
- Name
DB_PASSWORD- Type
- string
- Description
Database password. Default: empty
- Name
STRIPE_KEY- Type
- string
- Description
Stripe publishable API key. Required for subscription billing.
- Name
STRIPE_SECRET- Type
- string
- Description
Stripe secret API key. Required for server-side Stripe operations.
- Name
STRIPE_WEBHOOK_SECRET- Type
- string
- Description
Stripe webhook signing secret for verifying webhook payloads.
- Name
CASHIER_CURRENCY- Type
- string
- Description
Default currency for Stripe transactions. Default:
usd
- Name
SENTRY_LARAVEL_DSN- Type
- string
- Description
Sentry DSN for error tracking. Optional.
- Name
MAIL_MAILER- Type
- string
- Description
Mail driver (smtp, mailgun, ses, etc.). Default:
smtp
- Name
MAIL_HOST- Type
- string
- Description
SMTP server hostname. Default:
127.0.0.1
- Name
MAIL_PORT- Type
- string
- Description
SMTP server port. Default:
2525
- Name
MAIL_FROM_ADDRESS- Type
- string
- Description
Default sender email address. Default:
hello@example.com
Basic Usage Flow
Once the application is installed and configured, the typical workflow is:
- Register a new account via the Filament registration page at
/app/register. - Start a trial or subscribe to a plan via the billing page.
- Create a new Year (e.g., 2027) — the system auto-generates 12 months.
- Set the starting balance for the year.
- Add recurring payments (income sources, regular expenses) to each month.
- The system automatically calculates and propagates balances across all months.
- Use the Financial Calendar to visualize your year at a glance.
- Create tasks for projects and assign priorities, time estimates, and responsible persons.
- Attach requirements and specifications to tasks or payments for documentation.
- Track decisions made during task execution.
- Monitor your financial overview via the dashboard widgets and charts.
- Use the Activity Log to review all changes made to your data.
Examples
Planning a New Year
- Navigate to Years in the sidebar.
- Click Create Year and enter the year number (e.g., 2027).
- Set the starting balance (your current account balance).
- The system creates January through December automatically.
- Open each month to add expected income and expenses.
- View the Financial Calendar to see your projected balance trajectory.
Tracking Monthly Finances
- Open a specific month from the sidebar or year view.
- Add payments: specify name, amount, type (Income/Expense), status, and category.
- The starting balance carries over from the previous month's final balance.
- The final balance is automatically calculated:
starting_balance + income - expenses. - Mark payments as Completed, Pending, Cancelled, or Refunded as they occur.
Managing Project Tasks
- Open any month, year, or period resource.
- Navigate to the Tasks tab in the relation manager.
- Create tasks with name, priority (Low/Medium/High/Urgent), and estimated hours.
- Assign an author and responsible person.
- Update status as work progresses: Reported → In Progress → Completed.
- Log actual time spent for comparison with estimates.
- Add decisions within tasks to document choices made.
Using Periods for Recurring Schedules
- Navigate to Periods in the sidebar.
- Create a new period (e.g., "Q1 Sprint", "Monthly Review").
- Attach the period to relevant months via the many-to-many relationship.
- Add tasks and specifications to the period.
- Reorder periods using drag-and-drop.