Bubble excels at building internal business tools — inventory management, HR systems, and project management dashboards — because these apps have moderate user counts and benefit from rapid development. This tutorial covers designing data models for each use case, building admin dashboards, and creating the core workflows for inventory tracking, employee management, and task assignment.
Overview: Building Internal Business Software in Bubble
Internal tools are one of Bubble's strongest use cases — moderate user counts, complex data requirements, and the need for rapid development. This tutorial covers building three common internal tools: inventory management, HR employee records with leave tracking, and project management. You will learn the data models, admin interfaces, and key workflows for each.
Prerequisites
- A Bubble account with an app
- Understanding of Bubble Data Types and Repeating Groups
- Familiarity with Bubble workflows and Privacy Rules
- A clear understanding of your business processes
Step-by-step guide
Design the data model for all three modules
Design the data model for all three modules
In the Data tab, create Data Types for each module. Inventory: Product (name, sku, category, quantity, reorder_level, unit_cost, supplier, location). HR: Employee (user, first_name, last_name, department, position, start_date, salary, manager, status — active/inactive), Leave_Request (employee, type — vacation/sick/personal, start_date, end_date, status — pending/approved/rejected, approved_by). Project Management: Project (name, description, owner, status, start_date, due_date), Task (project, title, assignee, priority, status — todo/in-progress/done, due_date). Create Option Sets for departments, leave types, task priorities, and product categories.
Expected result: Complete data models for inventory, HR, and project management modules.
Build the inventory management dashboard
Build the inventory management dashboard
Create an 'inventory' page with a Repeating Group showing all Products. Add search by name/SKU and filter by category. Each row shows product name, SKU, quantity (color-coded: red if below reorder_level, yellow if within 20% of reorder level, green otherwise), unit cost, and location. Add an 'Add Product' button that opens a form popup. Add 'Adjust Stock' functionality: a +/- button on each row that opens a popup for quantity adjustment with a reason field. Create a Stock_Adjustment Data Type to log every change with timestamp, user, and reason for audit purposes.
Expected result: An inventory dashboard with search, stock level indicators, and audited quantity adjustments.
Create the HR employee records and leave management
Create the HR employee records and leave management
Create an 'employees' page with a Repeating Group of Employees filtered by department dropdown. Each row shows name, department, position, start date, and status badge. Click a row to open the employee detail page showing full profile information, employment history, and leave balance. Build a 'request-leave' page where employees submit Leave_Requests. Create an approval workflow: the manager receives an email notification, opens the approval page, and clicks Approve or Reject. Approved leave automatically updates the employee's leave balance.
Pro tip: Calculate remaining leave days dynamically: total annual allowance minus the sum of approved leave days in the current year.
Expected result: Employee directory with profiles and a complete leave request/approval workflow.
Build the project management board
Build the project management board
Create a 'projects' page listing all Projects in a Repeating Group with name, status, owner, and due date. Click a project to open its detail page showing a Kanban-style board. Create three columns (Groups in Row layout): To Do, In Progress, Done. Each column contains a Repeating Group of Tasks filtered by status matching the column name. Each task card shows the title, assignee avatar, priority badge, and due date. Add drag-and-drop between columns using a plugin, or use dropdown/button status changes. Add a 'New Task' button that creates a Task linked to the project.
Expected result: A project detail page with a Kanban-style task board showing tasks organized by status.
Add a unified admin dashboard
Add a unified admin dashboard
Create a 'dashboard' page that serves as the home screen for internal users. Add summary cards at the top: Total Products (count), Low Stock Items (count where quantity < reorder_level), Pending Leave Requests (count), Overdue Tasks (count where due_date < today AND status is not done). Below the cards, add recent activity feeds: last 5 stock adjustments, last 5 leave requests, and last 5 task updates. Use Repeating Groups with 5-item limits and sorted by date descending. Add quick-action buttons for common tasks: Add Product, Submit Leave, Create Task.
Expected result: A unified dashboard showing key metrics and recent activity across all three business modules.
Set up Privacy Rules and role-based access
Set up Privacy Rules and role-based access
Add a role field to User (Option Set: employee, manager, admin, hr). Create Privacy Rules for each Data Type: Products — visible to all logged-in users, editable by admin and managers. Employees — each employee can see their own record, managers can see their team, HR and admin can see all. Leave_Requests — employees see their own, managers see their team's, HR sees all. Tasks — visible to project members and admins. Add page-level access checks: on each page's Page is loaded event, check the user's role and redirect unauthorized users to the dashboard with an access denied message.
Expected result: Role-based access control restricting data visibility and editing based on user roles.
Complete working example
1INTERNAL BUSINESS SOFTWARE SUMMARY2====================================34DATA TYPES:5 Inventory:6 Product: name, sku, category, quantity, reorder_level,7 unit_cost, supplier, location8 Stock_Adjustment: product, quantity_change, reason,9 adjusted_by (User), timestamp1011 HR:12 Employee: user, first_name, last_name, department,13 position, start_date, salary, manager (User), status14 Leave_Request: employee, type, start_date, end_date,15 status (pending/approved/rejected), approved_by, notes1617 Project Management:18 Project: name, description, owner (User), status,19 start_date, due_date, members (list of Users)20 Task: project, title, description, assignee (User),21 priority, status (todo/in-progress/done), due_date2223USER ROLES (Option Set):24 employee: basic access to own data25 manager: team data + approvals26 hr: all employee data + leave management27 admin: full access to everything2829DASHBOARD METRICS:30 Total Products: count of Products31 Low Stock: count where quantity < reorder_level32 Pending Leave: count where status = 'pending'33 Overdue Tasks: count where due_date < today, status ≠ done3435KEY WORKFLOWS:36 Stock Adjustment:37 Adjust quantity → Create Stock_Adjustment log38 If quantity < reorder_level → Send alert email3940 Leave Approval:41 Employee submits → Email to manager42 Manager approves → Update status, email employee43 Manager rejects → Update status, email with reason4445 Task Status:46 Drag/click to new column → Update task status47 If overdue → Highlight red, notify assigneeCommon mistakes when writing software for internal project management, inventory, or HR in Bubbl
Why it's a problem: Not logging inventory changes with an audit trail
How to avoid: Create a Stock_Adjustment Data Type that records every quantity change with user, timestamp, and reason
Why it's a problem: Calculating leave balances incorrectly
How to avoid: Calculate remaining leave dynamically: total annual allowance minus the count of approved leave days in the current year
Why it's a problem: Not implementing role-based access for sensitive HR data
How to avoid: Set up Privacy Rules and page-level role checks to restrict HR data to authorized roles only
Best practices
- Create an audit trail for all data changes using log Data Types
- Calculate derived values (like leave balance) dynamically rather than storing static values
- Implement role-based Privacy Rules for every Data Type containing sensitive information
- Build a unified dashboard with summary metrics for quick overview
- Use Option Sets for categories, departments, and statuses to prevent data inconsistency
- Add email notifications for approval workflows so nothing gets stuck in a queue
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I need to build internal business software in Bubble covering inventory management, HR employee records with leave tracking, and project management. Can you help me design the database schema and page structure for all three modules?
Help me build an internal tool with three modules: inventory tracking with stock alerts, employee records with leave request/approval, and a project management board with tasks. Create the Data Types and build the admin dashboard.
Frequently asked questions
Can Bubble handle the performance needs of internal tools?
Yes. Internal tools typically have moderate user counts (10-100) which Bubble handles well. For larger datasets, use pagination and database constraints for optimal performance.
Should I build one app for all modules or separate apps?
One app is usually better for internal tools because modules share data (employees are also task assignees). Use page-based navigation to separate modules within a single app.
How do I handle data import from existing systems?
Export data as CSV from your current system. Clean and format it for Bubble's import. Import parent Data Types first, then child types with relationship mapping.
Can I add custom reports and analytics?
Yes. Use Bubble's search aggregation (:count, :sum, :average) in Text elements and chart plugins to build reporting dashboards.
How do I back up internal tool data?
Export each Data Type as CSV regularly via Data tab → App data → Export. Enable the Data API for automated backup scripts.
Can RapidDev build custom internal tools in Bubble?
Yes. RapidDev builds complete internal business tools including inventory systems, HR platforms, project management tools, and custom ERP solutions in Bubble with role-based access and reporting.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation