Skip to content

CoffeeBeansLabs/allocate

Repository files navigation

Allocate

CoffeeBeans Logo

Table of Contents

About the Application

Allocate is an open-source tool designed for staffing and talent management. It helps organizations optimize resource utilization by factoring in individual skills, professional experience, and current availability. Allocate also manages asset allocation and tracks client/project assignments.

Features

  • Talent allocation based on skills, experience, and availability.
  • Resource management for assets assigned to individuals.
  • Client and project tracking to manage team assignments.
  • Integrated reports for insight into staffing and resource distribution.

Development

Allocate uses an Nx monorepo setup for both client-side and server-side of the application, providing a scalable and modular approach to managing various parts of the app.

Built With

Allocate is built using the following technologies:

  • Nx: Nx is a powerful build framework for managing monorepos. It provides tools for optimizing builds, testing, and development in large, complex projects like Allocate. The monorepo approach allows the client and server codebases to live together, making it easier to maintain and develop both simultaneously.

  • ViteJs: Vite is a fast and modern frontend build tool that significantly improves the development experience by providing instant server start, hot module replacement (HMR), and optimized build outputs. In Allocate, ViteJs is used to manage the client-side of the application, allowing developers to iterate quickly.

  • Python Django: Django is a high-level backend web framework known for its rapid development capabilities and robustness. It powers Allocate’s backend APIs, ensuring scalable, maintainable, and secure handling of business logic.

  • PostgreSQL: PostgreSQL is a powerful, open-source relational database system. Allocate uses PostgreSQL for storing essential application data, including user profiles, staffing assignments, asset allocations, and reports. PostgreSQL provides reliability, strong SQL compliance, and extensibility features necessary for enterprise-grade applications like Allocate.

Integrations

Allocate integrates with several third-party services to extend its functionality:

  • Google OAuth: Google OAuth is used for secure authentication in Allocate. It allows users to log in with their Google accounts, providing a seamless and secure sign-in experience without managing passwords internally.

  • Zoho People: Zoho People is a human resource management solution that helps Allocate import and manage talent data. By integrating with Zoho People, Allocate can automatically synchronize employee details, availability, and skillsets for accurate staffing allocation.

  • Airtable: Airtable provides structured data storage and an easy-to-use API interface. Allocate leverages Airtable for managing project and client assignments. This integration allows flexibility in managing team assignments with quick lookups and updates to project details.

  • Slack Notifications: Slack integration enables Allocate to send real-time notifications to users. Whether it's about staffing updates, project changes, or new reports, Slack notifications keep the team informed about important changes within the platform.

Prerequisites

Before setting up Allocate locally, ensure you have the following dependencies installed:

  1. Node.js: Version >= 20.x

    • Node.js is required for running the frontend server and build processes in Allocate. Make sure you have version 20.x or higher to leverage the latest features of JavaScript and npm.
  2. PostgreSQL: Version == 14.6

    • PostgreSQL is the relational database used by Allocate for storing data. Version 14.6 ensures compatibility with the database schema and features used in the application.
  3. Python: Version >= 3.10.10

    • Python is required for running the backend, and version 3.10.10 or higher is necessary to support the Django framework and related packages used in Allocate.
  4. Poetry: A Python dependency management tool

    • Poetry is used to manage Python dependencies in Allocate’s backend. It simplifies the process of installing and updating Python packages in a consistent and reproducible way.
  5. A C compiler

    • A C compiler is needed for compiling native dependencies, particularly when installing Python packages that require compilation, such as database drivers.
  6. Python development libraries: python-dev or python3-dev

    • These libraries are necessary to compile Python extensions and ensure that all required packages work smoothly.
  7. PostgreSQL development headers: libpq-dev

    • libpq-dev is needed to install and use PostgreSQL-related packages for Python, ensuring the backend can interact with the database properly.

Setup Instructions

Frontend (Client App)

  1. Set environment variables: Configure the environment variables by creating a .env file using the template provided in .env.example.

  2. Install all monorepo dependencies:

npm install
  1. Start the frontend development server:
npx nx serve ui
  1. View workspace graph
npx nx graph
  1. View project details (replace with the actual project name)
npx nx show project <app name> --web

Backend (Service App)

  1. Set environment variables: Update the apps/service/.env file with your backend environment settings, using .env.example as a reference.

  2. Install backend dependencies and run initial backend setup after setting up local Database(Refer Service Readme):

npx nx run service:app-init
  1. Update user permissions (if --role is not passed it takes default as super_admin):
npx nx run service:manage manage_user_groups --email=<your email> --role=<role name> --create
  1. Run development for server app:
source apps/service/.env
npx nx serve service

Running tests

To execute tests with Nx use the following syntax:

npx nx run-many -t lint test -p util-hooks util-data-values util-formatting ui-components ui service

Refer the Nx Documentation for more CLI commands that can be used.

Docker Setup (Local)

  1. Set environment variables: Ensure the environment variables are configured for both the frontend and backend, using .env.example and .env.db.example as a template.

  2. Start the app using Docker:

docker compose up

Technical Documentation

For detailed technical documentation, including in-depth information about the project architecture, API references, and system design, please refer to the following link:

Technical Documentation

Contributing

Please see our contributing guide.

License

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published