Git Product home page Git Product logo

minicrm's Introduction

miniCRM

Build status

This is the repository for miniCRM, a simple, lightweight CRM designed for SMBs using Google Form Ads!

miniCRM Landing Page

Getting Started

Install the following tools:

To run our project locally, you should run the frontend and backend separately,

To run the frontend, you want to do the following

# Navigate to frontend folder
cd frontend

# Install dependencies
npm install

# Run frontend
npm run start

To run the backend, you want to do the following

# Navigate to backend folder
cd backend

# Populate `webapp` with necessary files to run local server.
# Only needs to be done ONCE.
cp -R ./src/main/WEB-INF ./src/main/webapp

# Run backend (works only with Java 8)
mvn package appengine:run

To deploy our project onto GCP, you should run the production build of our frontend (which builds inside of the webapp folder) and then run the production build of our backend (which also deploys). You will need to specify a GCP project id in backend/pom.xml.

# First, run prod build of frontend in the frontend folder
npm run build
# Then, deploy to Google App Engine in the backend folder
mvn package appengine:deploy

Dev Workflow

  1. The dev workflow starts off by creating a branch for a specific issue. Use the following name convention for branch naming: <nickname>/<issue-name>

  2. Create pull request for your issue and fill out the PR template as you see fit.

  3. Merge any conflicts.

  4. Ensure your PR successfully passes all applicable CI pipelines. You can test and debug this locally by running the following commands:

    #Navigate to the front end folder
    # Installs npm dependencies
    npm install
    
    # Lints your Typescript files
    npm run lint
    
    # Builds the app
    npm run build
    
    # Runs front end unit tests
    npm run test
    
    #Navgate to the backend folder
    #Run back end unit tests
    mvn test
    
  5. Get at least one intern (Roddy, Alex, Amanuel) to review and approve your PR and at least one host (Rodrigo and Anthoney) to review and approve your PR. (Note: This can be done concurrently with step 3)

  6. Once at least one intern and at least one host has approved your PR, you can merge into master.

Javadocs

Backend Javadocs can be found at backend/javadocs/index.html

Contributors

STEP Interns: Alex, Amanuel, Roddy
Hosts: Rodrigo, Anthoney
Developed during Summer 2020

minicrm's People

Contributors

ataddesse avatar fluffypenguin avatar r0ddy avatar

Stargazers

 avatar  avatar

Watchers

 avatar

minicrm's Issues

Logging out causes logging out across all google applications

Logging out on our application causes the Google account to be signed out across all google applications.
Additionally, on the chrome book, logging out pulls up the account management settings page for the device (as it seems like it is prompting for a complete log out of the account from the device), which is not a feature we want.

Additionally, when logging in while already authenticated, if it is possible, we probably want to allow the user to choose which account or have that additional confirmation page instead of instantly taking them from landing -> guide.
Instead, it should look like landing -> choose a google account -> guide.

401 Unauthorized error doesn't redirect

Accessing a page that needs authorization (i.e. crm/leads or crm/forms) while not logged in just keeps the leads table loading infinitely (since the server denies the request with 401 Unauthorized).
Expected behavior would be to redirect to the landing page.

Fix Lead Table Filter

Right now, we are creating our own filter predicate function in . Our method currently involves traversing each lead's JSON and appending all the values together in an accumulator and then checking if the filter string is a substring of this accumulator.

For example, consider a user filtering for "template" on this sample json:

{
  "a": "temp", 
  "b": "late" 
}

Our filter predicate would include this in the filtered results because the filter string "template" is a substring of the concatenation of the values ("temp" + "late").

What we want to do instead is check if "template" is a substring of each value individually.

Implement E2E tests

Ideally, I would like to create an E2E test for lead creation process i.e. from logging in to posting lead to seeing form table and lead table populated.

Landing page broken

Landing page doesn't style correctly for some reason (maybe associated with the JS error).
image

Additionally, the login button doesn't show text sometimes and when clicking it, it sends to /undefined -> seems like an error is happening in the login service.
image

Believe these bugs are associated with the recent i18n changes.

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.