Giter Site home page Giter Site logo

gerp's Introduction

Open Source ERP Project

Introduction

Welcome to our Open Source ERP Project! This project aims to create an ERP system with a minimal footprint, easy deployment, and low cost for end-users. Designed for non-technical users, it features a user-friendly interface and secure authentication, making it an ideal choice for small to medium-sized businesses.

Setup and contribution

Pre-requisites:

- Docker
- Go (see go version in .env.example)
- make
- npm + yarn

Project setup

  • To set up your dev environment you simply need to run make prepare.
  • Ensure Docker is running and run make run-dev
  • This should build the frontend and backend in dev/watch mode. The application should rebuild on changes to either section of the project although the frontend will not auto refresh.
  • The database will also have migrations applied and will be listening on port 5432.

Troubleshooting:

  • Make sure that you have launched docker desktop.
  • Ensure that you don't have postgres running locally.

Docs

You can access swagger at http://localhost:8080/api/v1/swagger/index.html

Contributing guidelines

  • Due to the nature of this project being for non-technical users we are taking a schema first approach by defining an open-api spec. This is generating an axios client based on the schema for the frontend. Please do not edit the axios directory, you should have all the types and api routes necessary.

  • The same stands for backend, all of our request and response DTOS should be defined in the api yaml file and not edited. If you need to create a new api route, you must define it in the api schema and ensure you run make gen-tools and the related commands to generate the frontend and backend code.

  • For databases we are again using a schema based approach and using SQLC for codegen. You can read more about how it works or follow the examples in the DB folder, you simply write your migrations and queries and run make sqlc to generate the code.

Frontend

  • Our frontend uses react and axios with tailwind.

Backend

  • Backend is Go, Gin, postgres.

Key Features

User Authentication and Authorization

  • Implements Role-Based Access Control (RBAC) to manage user permissions and display options based on auth principles.

Core Modules

  • Financial Management: Includes general ledger, accounts payable, accounts receivable, and budgeting.
  • Human Resources (HR) Management: Manages employee records, payroll, and leave management.
  • Inventory Management: Handles stock tracking, order management, and supply chain details.

Features TBD

  • Customer Relationship Management (CRM): Manages contacts, sales pipeline, and customer interactions.

Infrastructure

  • A scalable database schema capable of handling various business processes and data relationships.
  • RESTful APIs for integration and scalability.
  • Documentation via swagger, very important
  • Nginx for routing
  • Terraform for IaC
  • Ansible for configuration

Reporting and Analytics

  • Basic reporting for financials, sales, and inventory.
  • Dashboards for real-time data visualization.

Documentation and Testing

  • Comprehensive documentation for both users and developers.
  • Emphasis on testing and quality assurance, including unit and integration tests.

Roadmap

The initial release will focus on the MVP with core functionalities. Future updates to include advanced analytics, industry-specific modules, and an expanded plugin system.

Stay tuned for updates as we progress in building an efficient, user-friendly, and cost-effective ERP solution!

gerp's People

Contributors

deanrtaylor1 avatar padi-dev-ducpc avatar

Stargazers

HoangPham avatar  avatar

Watchers

 avatar

Forkers

padi-dev-ducpc

gerp's Issues

[feature] Localization/Internationalisation

User Story

As a user, I want to be able to use the website in my own language so that I can be productive.

Acceptance Criteria

  1. Front-End Implementation Steps

    • Step 1: Add i18n/internationalisation framework
    • Step 2: Configure base messages
    • Step 3: Ensure all text is added to the page via the localisation framework
    • Step 4: Allow users to change the language
    • Step 5: Implement language selection UI (e.g., dropdown menu, flags, language switcher).
    • Step 6: Ensure that the selected language preference is saved for returning users (consider using cookies or local storage).
    • Step 7: Test the UI in different languages for layout and design consistency.
  2. Back-End Implementation Steps

    • Step 1: Add i18n/Localisation framework
    • Step 2: Setup json/yaml/toml files
    • Step 3: Update Respond function to call i18n/localisation
    • Step 5: Ensure that error messages and other dynamic texts are localized.
    • Step 6: Set up a default/fallback language for missing translations.
    • Step 7: Create middleware to get/set localisation languaeg

[feature] protect edit/users/:userId

User Story

As an admin, I want to be able to update my users' profiles so that I can self manage my employees' information.

Acceptance Criteria

List the requirements that must be met for the feature to be considered complete.

  1. Front-End Implementation Steps

    • Step 1: allow admins to edit user information
    • Step 2: block editing if user is not an admin and they are not the owner of the profile
  2. Back-End Implementation Steps

    • Step 1: Add role based authentication to post requests

[frontend] backlog

  • Configure toast - Set up a toast component to display api errors/success messages in the bottom right corner
  • Implement tanstack/react query - set up a hook to nicely handle api requests using axios
  • Add Toast messages to signin/signup
  • Tidy up sign in sign up pages
  • Create Reuseable select component - should handle styles, shouldreceive props
  • Add search/sort/filter to table component
  • Move all static text to useTranslate hook
  • Move all string inputs in function calls to enums/constant values
  • Navbar
  • Top bar/title bar
  • Set locale from select
  • Convert TableRow to reusable component or rename to UsersRow

[feature] Front end design system

User Story

As a front-end developer, I want to implement a comprehensive design system and default layout for our React application so that the app has a consistent, modern, and user-friendly interface across all pages.

Acceptance Criteria

  1. Front-End Implementation Steps

    • Step 1: Research and select a design system/framework that aligns with our app’s needs (consider Material-UI, Ant Design, or custom with Tailwind CSS).
    • Step 2: Set up the chosen design system in the React application.
    • Step 3: Develop a default layout component that includes a responsive navbar mounted to the left side.
    • Step 4: Ensure that the layout is responsive and adapts to different screen sizes.
    • Step 5: Implement a basic color scheme and typography that aligns with our brand guidelines.
    • Step 6: Create a set of reusable UI components (buttons, inputs, cards, etc.) based on the design system.
    • Step 7: Ensure accessibility standards are met in the design (color contrast, keyboard navigation, ARIA attributes).
    • Step 8: Review and finalize the design in a Pull Request (PR) before implementation, welcoming team input and ideas.
  2. Back-End Implementation Steps

    • (Not applicable for this user story as it primarily focuses on front-end development.)

Is this feature request related to a problem?

Currently, our React application lacks any design implementation.

Proposed Solution

Implement a design system that provides a consistent set of design principles and reusable components. This system will guide the development of UI elements, ensuring cohesion and a better user experience.

Alternative Solutions

  • Consider different design frameworks and compare their adaptability to our app's needs.
  • Explore the possibility of building a custom design system if existing systems do not align with our specific requirements.

Additional Context

For inspiration and visual direction, the following design concepts can be referenced:

The final design must be responsive and open to team input, with a focus on usability and modern aesthetics.

Build Login/Signup flow

  • Backend - User Model/schema
  • Backend - Create User API
  • Update api-v1.yaml
  • Backend - Password Encryption
  • Backend - Token Generation
  • Frontend - App Setup
  • #2
  • Frontend - Login Page

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.