Giter Site home page Giter Site logo

panshak / accountill Goto Github PK

View Code? Open in Web Editor NEW
1.6K 29.0 411.0 1.92 MB

Fullstack open source Invoicing application made with MongoDB, Express, React & Nodejs (MERN)

Home Page: https://accountill.netlify.app

License: MIT License

HTML 1.64% JavaScript 85.69% CSS 12.41% Dockerfile 0.25% Procfile 0.01%
react redux nodemailer mern-stack invoice jwt-authentication google-authentication accounting javascript expressjs

accountill's Introduction

MERN Stack Invoicing Application

Built with the MERN stack (MongoDB, Express, React and NodeJS). Invoice

Update

I am pleased to inform you that the name of this repository has been changed from Arc Invoice to Accountill. There are so many things coming! Stay tuned!!

Panshak

Introduction

This is a side project I've been working on. A full stack invoicing application made using the MERN stack (MongoDB, Express, React & Nodejs), specially designed for freelancers and small businesses, but can be used for almost any type of business need. With this application, you can send beautiful invoices, receipts, estimates, quotes, bills etc to your clients. Jump right off the Live App and start sending invoice or download the entire Source code and run it on your server. This project is something I've been working on in my free time so I cannot be sure that everything will work out correctly. But I'll appreciate you if can report any issue.

Invoice Dashboard

Key Features

  • Send invoices, receipts, estimates, quotations and bills via email
  • Generate and send/download pdf invoices, receipts, estimates, quotations and bills via email
  • Set due date.
  • Automatic status change when payment record is added
  • Payment history section for each invoice with record about payment date, payment method and extra note.
  • Record partial payment of invoice.
  • Clean admin dashboard for displaying all invoice statistics including total amount received, total pending, recent payments, total invoice paid, total unpaid and partially paid invoices.
  • Multiple user registration.
  • Authentication using jsonwebtoken (jwt) and Google auth

Technologies used

This project was created using the following technologies.

Client

  • React JS
  • Redux (for managing and centralizing application state)
  • React-router-dom (To handle routing)
  • Axios (for making api calls)
  • Material UI & CSS Module (for User Interface)
  • React simple Snackbar (To display success/error notifications)
  • Cloudinary (to allows users to upload their business logo)
  • Apex Charts (to display payment history)
  • React-google-login (To enable authentication using Google)

Server

  • Express
  • Mongoose
  • JWT (For authentication)
  • bcryptjs (for data encryption)
  • Nodemailer (for sending invoice via email)
  • html-pdf (for generating invoice PDFs)

Database

MongoDB (MongoDB Atlas)

Configuration and Setup

In order to run this project locally, simply fork and clone the repository or download as zip and unzip on your machine.

  • Open the project in your prefered code editor.
  • Go to terminal -> New terminal (If you are using VS code)
  • Split your terminal into two (run the client on one terminal and the server on the other terminal)

In the first terminal

  • cd client and create a .env file in the root of your client directory.
  • Supply the following credentials
REACT_APP_GOOGLE_CLIENT_ID = 
REACT_APP_API = http://localhost:5000
REACT_APP_URL = http://localhost:3000

To get your Google ClientID for authentication, go to the credential Page (if you are new, then create a new project first and follow the following steps;

  • Click Create credentials > OAuth client ID.
  • Select the Web application type.
  • Name your OAuth client and click Create
  • Remember to provide your domain and redirect URL so that Google identifies the origin domain to which it can display the consent screen. In development, that is going to be http://localhost:3000 and http://localhost:3000/login
  • Copy the Client ID and assign it to the variable REACT_APP_GOOGLE_CLIENT_ID in your .env file
$ cd client
$ npm install (to install client-side dependencies)
$ npm start (to start the client)

In the second terminal

  • cd server and create a .env file in the root of your server directory.
  • Supply the following credentials
DB_URL = 
PORT = 5000
SECRET = 
SMTP_HOST = 
SMTP_PORT = 
SMTP_USER = 
SMTP_PASS = 

Please follow This tutorial to create your mongoDB connection url, which you'll use as your DB_URL

$ cd server
$ npm install (to install server-side dependencies)
& npm start (to start the server)

Troubleshooting

If you're getting error while trying to send or download PDF, please run the following in your server terminal.

$ npm install html-pdf -g
$ npm link html-pdf
$ npm link phantomjs-prebuilt

Docker

Using docker is simple. Just add the .env contextualized with the docker network.

e.g:

goes to path "server/.env"

DB_URL = mongodb://mongo:27017/arch
PORT = 5000
SECRET = 
SMTP_HOST = 
SMTP_PORT = 
SMTP_USER = 
SMTP_PASS = 

goes to path "client/.env"

REACT_APP_GOOGLE_CLIENT_ID = 
REACT_APP_API = http://localhost:5000
REACT_APP_URL = http://localhost

And run

docker-compose -f docker-compose.prod.yml build

And then

docker-compose -f docker-compose.prod.yml up

Comment

I intend to keep adding more features to this application, so if you like it, please give it a star, that will encourage me to to keep improving the project.

Author

License

  • This project is MIT licensed.

accountill's People

Contributors

avisekhgurung avatar micheldiz avatar orivoir avatar panshak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

accountill's Issues

Demo login id and password

To developer:
Could you kindly provide an login account for the demo site? Wanna to try the app before launch.

==By the way , some comments: ==
Also suggest to introduce some screenshot or GIFs to show interface to attract peoples.

We can see many people would interested to your project in the near future, general public ,small business users, developers.
In some extent, your work would became ERP/CRM or accounting software in the future, and there are many different industry , some are goods, some are labor , some are services, so try keep flexibility and plugin/module like system would be handy . Strongly recommend you to look and learn from ERPNext/Frappe framework, their work were so flexible.

react-google-login deprecated, migration must be done before March 31, 2023

Following the instructions to run the source code, when I try to sign-in from google the following error is shown in the console:

Object { error: "idpiframe_initialization_failed", details: "You have created a new client application that uses libraries for user authentication or authorization that will soon be deprecated. New clients must use the new libraries instead; existing clients must also migrate before these libraries are deprecated. See the Migration Guide for more information." }

It seems that this is because the app uses react-google-login, and react-google-login uses the "Google Sign-In JavaScript Platform Library" which will be discontinued after March 31 2023. react-google-login is no longer maintained as well.

Data getting stored to cloud but not able to fetch

Hi,

I was trying this software and found that if you add a new customer and generate a bill you will be able to see it for the first time but when we are trying to fetch from the online database. it is returning an empty array. Anyone else facing this issue?

invoice and customer records not showing

the records for invoice and customers are empty eventhough I've successfully create few records of customers and invoices. I've also verified the data collections in MongoAtlas. how to make it show on frontend?

Add Contributing guidelines and Code of Conduct

case:

  • Missing Contributing guidelines and Code of Conduct.

benefit:

  • Contributing guidelines and a Code of Conduct could help others who want to get involved in the project have a clearer picture on these requirements.

community

Enhancement Proposal: Implementing Templates for Feature Requests, Bug Reports, and Pull Requests

Suggestion: Issue Templates for Feature Requests, Bug Reports and Pull Requests

I propose adding issue templates for feature requests and bug reports to enhance the issue tracking process. Below are template examples for both types of issues:

  • Feature Request Template:

    ---
    name: Feature Request
    about: Suggest a new idea or improvement
    ---
    
    **Describe the Feature Request**
    A clear and concise description of the feature you are proposing.
    
    **Why do you believe this feature is necessary?**
    Explain the problem or opportunity that this feature addresses.
    
    **Additional context**
    Add any other context or screenshots about the feature request here.
  • Bug Report Template:

    ---
    name: Bug Report
    about: Report a bug to help us improve
    ---
    
    **Describe the Bug**
    A clear and concise description of what the bug is.
    
    **To Reproduce**
    Steps to reproduce the behavior:
    
    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error
    
    **Expected Behavior**
    A clear and concise description of what you expected to happen.
    
    **Screenshots**
    If applicable, add screenshots to help explain your problem.
    
    **Environment (please complete the following information):**
     - OS: [e.g., iOS]
     - Browser: [e.g., Chrome, Firefox]
     - Version: [e.g., 22]
    
    **Additional context**
    Add any other context about the problem here.

These templates aim to collect information in a structured manner, making it easier for contributors to submit issues effectively. It can provide a smoother issue tracking experience.

  • Pull Request Template:
    ---
    name: Pull Request
    about: Submit changes for review
    ---
    
    **Description**
    Provide a brief description of the changes introduced by this pull request.
    
    **Related Issue**
    If there is an issue associated with this pull request, please reference it here.
    
    **Type of Change**
    - [ ] Bug fix
    - [ ] New feature
    - [ ] Enhancement
    - [ ] Documentation update
    
    **Checklist:**
    - [ ] I have tested my changes thoroughly.
    - [ ] My code follows the project's coding standards.
    - [ ] I have added unit tests if applicable.
    - [ ] Documentation is updated to reflect the changes.
    
    **Additional context**
    Add any additional context or information that would be helpful for reviewers.
    
    **Screenshots**
    If applicable, include screenshots or gifs showcasing the changes made.
    
    **Reviewer Notes**
    Any specific instructions for the reviewer or areas of focus.

This PR template aims to guide contributors in providing essential information for effective code review. Consider adding it to streamline the contribution process. Thank you!

missing dependencies?

When starting the server on Ubuntu 21.10 I get a missing dependency for Express.

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'express' imported from /home/user/arcinvoice/server/index.js

Installation problem

Hello,

I have a problem when starting the Client part.

When I do "npm start" I get this error.

Starting the development server...

Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:133:10)
at module.exports (C:\Users\AdrienLcq\Downloads\accountill-0.1.3\client\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (C:\Users\AdrienLcq\Downloads\accountill-> 0.1.3\client\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (C:\Users\AdrienLcq\Downloads\accountill-0.1.3\client\node_modules\webpack\lib\NormalModule.js:471:10)
at C:\Users\AdrienLcq\Downloads\accountill-0.1.3\client\node_modules\webpack\lib\NormalModule.js:er.js:233:18
at context.callback (C:\Users\AdrienLcq\Downloads\accountill-0.1.3\client\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
at C:\Users\AdrienLcq\Downloads\accountill-0.1.3\client\node_modules\babel-loader\lib\index.js:59:103 {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines',
reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v18.3.0

Thank you for your help

missing company when download PDF

When i want to download PDF or send to customer,some errors happen.
It seems like require company,company.phonenumber,company.email and other.
But when i create the invoice,there is no place to input company.
Am i wrong or you miss the company?

Something went wrong

While logging in, saying something went wrong, i have provided both key client id and secret key also. Please help me.

Docker build fails

The docker build fails on the client build part (client/Dockerfile).

COPY client/yarn.lock .
COPY failed: file not found in build context or excluded by .dockerignore: stat client/yarn.lock: file does not exist

After checking there's indeed no yarn.lock file present in the client folder.
No idea if it's needed or not, could you please add the file or remove the copy line from the Dockerfile?

Thanks!

Add way to include payment details

Love this software, thanks for releasing it!

On my invoices, I include my payment details so the client can pay me. I can't see a way to do that currently (but I could have missed it?). It would be great to have this feature.

Docker file not written

When I was running docker it shows this error and I am not able to find this file in given folders,please help asap!!

=> ERROR [production 3/3] COPY ./client/nginx.conf /etc/nginx/conf.d/default.conf
file not found

Google login not working

Hello @panshak

Seems like Google Auth is not working. The user is being redirected to the Google login screen, selects an email, the Auth tab closes but googleSuccess in /components/Login/Login is not being called.

I forked your project and started working on Bulkit. Thanks for the great setup!

help

please help me

App is broken?

There is probably a bug somewhere since the app is broken now.

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.