diff --git a/README.md b/README.md index bc555ab..552852d 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,18 @@ A modern, responsive web application for tracking construction/contracting jobs, - Links and references (QB Link, Voxer Link, Folder Link) - Status flags (Active, Tax Exempt, Docs Uploaded, etc.) - **Notes System**: Add rich text notes to jobs with sentiment tracking +- **Employee Management**: + - Create, read, update, and delete employee records + - Track employee information (Name, Email, Phone, Voxer ID, Status) + - Employee reports system for tracking employee-related notes + - Table and card view options + - Search functionality +- **User Preferences**: + - Dark mode toggle + - Default view preferences (Table/Card) + - User-specific settings stored in PocketBase - **Search & Filter**: Search jobs by number, name, or client; filter by status -- **Dashboard**: View job statistics and quick actions +- **Dashboard**: View job statistics and quick actions with navigation to all modules - **Responsive Design**: Works on mobile, tablet, and desktop ## Technology Stack @@ -23,6 +33,7 @@ A modern, responsive web application for tracking construction/contracting jobs, - **CSS Framework**: Tailwind CSS (via CDN) - **Rich Text Editor**: Quill.js - **Backend**: PocketBase +- **Development Server**: Bun (or any static file server) - **Design**: Modern, clean UI with Indigo/Green/Purple color scheme ## Setup Instructions @@ -105,6 +116,37 @@ Create a collection named `notes` with the following fields: - `date` (Date) - `job` (Relation) - Link to Job_Info collection (optional) +#### Employee_Records Collection + +Create a collection named `Employee_Records` with the following fields: + +- `id` (Auto) - Auto-generated ID +- `First_Name` (Text) +- `Last_Name` (Text) +- `Email_Address` (Text) +- `Phone_Number` (Text) +- `Voxer_ID` (Text) +- `Status` (Text) +- Additional fields can be added dynamically as needed + +#### Employee_Reports Collection + +Create a collection named `Employee_Reports` with the following fields: + +- `id` (Auto) - Auto-generated ID +- `row` (Text) +- `entered_by` (Text) +- `entered_date` (Date) +- `id_number` (Text) +- `report` (Text) +- `employee` (Relation) - Link to Employee_Records collection + +#### User Preferences + +User preferences are stored in the `users` collection. Add a field named `PRISM` (Text) to the `users` collection. This field stores JSON data containing: +- `dark_mode` (Boolean) +- `default_view` (Text) - "table" or "card" + ### 3. Configure PocketBase URL Update the PocketBase URL in `js/pocketbase.js` if your instance is running on a different address: @@ -121,7 +163,7 @@ const POCKETBASE_URL = 'http://127.0.0.1:8090'; ### 5. Set Collection Permissions -For both `Job_Info` and `notes` collections: +For all collections (`Job_Info`, `notes`, `Employee_Records`, `Employee_Reports`): 1. Go to the collection settings 2. Set **List/Search rule**: `@request.auth.id != ""` (authenticated users only) @@ -130,6 +172,9 @@ For both `Job_Info` and `notes` collections: 5. Set **Update rule**: `@request.auth.id != ""` (authenticated users only) 6. Set **Delete rule**: `@request.auth.id != ""` (authenticated users only) +**Note:** For the `users` collection, ensure users can update their own records to save preferences: +- **Update rule**: `@request.auth.id = id` (users can only update their own record) + ### 6. Run the Application 1. Install dependencies (if using Bun): @@ -165,19 +210,29 @@ php -S localhost:8000 ## File Structure ``` -Job-Pages/ -├── index.html # Login page -├── dashboard.html # Dashboard with stats -├── jobs.html # Jobs list and management -├── notes.html # Notes/reports page +Prism/ +├── index.html # Login page +├── dashboard.html # Dashboard with stats and navigation +├── jobs.html # Jobs list and management +├── notes.html # Notes/reports page +├── employees.html # Employee management page +├── preferences.html # User preferences page ├── js/ -│ ├── pocketbase.js # PocketBase client -│ ├── auth.js # Authentication -│ ├── jobs.js # Job CRUD operations -│ └── notes.js # Notes operations +│ ├── pocketbase.js # PocketBase client configuration +│ ├── config.js # Application configuration +│ ├── auth.js # Authentication functions +│ ├── jobs.js # Job CRUD operations +│ ├── notes.js # Notes operations +│ ├── employees.js # Employee CRUD operations +│ ├── employee-reports.js # Employee reports management +│ ├── preferences.js # User preferences management +│ └── custom-dropdown.js # Custom dropdown component ├── css/ -│ └── custom.css # Custom styles -└── README.md # This file +│ └── custom.css # Custom styles +├── config.json # Application configuration (collections, pagination, etc.) +├── server.js # Bun development server +├── package.json # Project dependencies and scripts +└── README.md # This file ``` ## Usage @@ -205,10 +260,31 @@ Job-Pages/ 5. Select sentiment (Positive, Negative, Neutral) 6. Click "Save Note" +### Managing Employees + +1. Navigate to the Employees page from the dashboard +2. Click "+ Add Employee" to create a new employee +3. Fill in employee information (First Name, Last Name, Email, Phone, Voxer ID, Status) +4. For existing employees, you can: + - Edit employee information + - Add employee reports + - View employee reports +5. Use the search bar to search by name, email, phone, or department +6. Toggle between Table and Card views + +### User Preferences + +1. Click on your user avatar in the top right corner +2. Select "Preferences" +3. Toggle dark mode on/off +4. Set your default view preference (Table or Card) +5. Click "Save Preferences" + ### Searching and Filtering -- Use the search bar to search by job number, name, or client -- Use filter buttons to show All, Active, or Inactive jobs +- **Jobs**: Use the search bar to search by job number, name, or client +- **Jobs**: Use filter buttons to show All, Active, or Inactive jobs +- **Employees**: Use the search bar to search by name, email, phone, or department ## Troubleshooting