Git Product home page Git Product logo

neverl8's Introduction

neverl8

neverl8 is a streamlined Go application utilizing the Go-Chi router, GORM ORM, Postgres, and a Vue frontend utilizing Vuetify components. Designed for simplicity and efficiency, this project will serve as the essential scheduler for Rise8.

Prerequisites

To get the most out of neverl8, please ensure you have the following installed on your system:

  • Go programming language (version 1.16 or higher) for the backend logic.
  • PostgreSQL database for data persistence.
  • Git for version control and collaboration.
  • Docker for server hosting

Installation

Follow these simple steps to get neverl8 up and running on your machine:

  1. Clone the repository to your local machine:
    git clone https://github.com/rise8-us/neverl8.git
  2. Navigate to the project directory.
  3. Launch the application:
    docker-compose up --build
    Congratulations! The application should now be accessible at http://localhost:8080.

Development Setup

neverl8 leverages pre-commit for managing git hooks, aiding in maintaining high code quality and consistency across contributions.

Setting Up Pre-commit

To integrate pre-commit into your development workflow:

  1. Install pre-commit on your local machine. Refer to the official installation guide for detailed instructions.
  2. Clone this repository and navigate to the project root.
  3. Activate pre-commit by running:
    pre-commit install

With these steps completed, pre-commit hooks will automatically execute on every git commit, enhancing your code quality checks.

Using golangci-lint

neverl8 also incorporates golangci-lint for enforcing Go best practices and code styles. To use golangci-lint in your development process:

  1. Install golangci-lint on your local machine. You can follow the official golangci-lint installation instructions.
  2. Once installed, you can run golangci-lint run in the project backend directory to analyze your code.

Frontend

neverl8 utilizes Vue for its frontend. To view and edit the frontend navigate to the frontend folder from root and type:

npm install
npm run serve

Testing

neverl8 embraces testing as a fundamental part of the development process. To run the unit & integration tests and ensure your setup is correctly configured:

go test ./...

This command triggers all the unit and integration tests within the project, verifying the integrity and functionality of your code.

neverl8's People

Contributors

drewfugate avatar drew-fugate-rise8 avatar

Watchers

Jacobi avatar Kyle Dozier avatar Asare Nkansah avatar  avatar

neverl8's Issues

SPIKE Add Frontend to mono repo

Decide on either using a frontend framework or using server-side rendering and HTML templates.

If choosing a SPA framework use monorepo strategy in same repo as neverl8 api to manage source code

Create Meeeting Types

As a Hiriing manager
I want to be able to create meeting types with a description, and assign hosts to beable to host the meeting
So I have templates that can be sent to applicant candidates

Present available hosts time blocks

As a hiring manager
I want neverl8 to present meetings no early than 1 day in advance of the time a person is selecting a meeting
I want it to present all available options from all hosts minus the the last host to conduct a meeting
So that we can shorten the time to hiring a new candidate.

Given a user is selecting a meeting
when a user selects a day
then neverl8 will show all available time slots from all available hosts

Reschedule as host

As a host
I want to be able to prompt the candidate to schedule a new time
So that that the interview can be rescheduled as soon as possible.

Configure Linter/Style checker

As a developer
I want the code to be consistent and clean
So that I can spend less time thinking about format and more time about logic.

Acceptance criteria

  • Lint/checkstyle tool to define and enforce code
  • IntelliJ import order config file, to make imports from all contributers align. (not sure if this applies)
  • pre-commit hook to run all tests and run lint before commit

Greenhouse Integration

As a hiring manager
I want a meeting scheduled in Greenhouse when a meeting is scheduled on the google hiring calendar
So that an interview scorecard is sent to the host.

See Host details

As a candidate or person requesting a meeting
I want to see the name and title of the host
So that I know who will be interviewing me.

Given a link to schedule a meeting at a specific time slot.
When I click the link for the time slot
Then, the page will show me the host information

notes:
Querying Google workspace is the ideal source for this data.

Meeting Host Prefrences

As a Meeting Host
I want to be able to specify the hours I'm available to host a meeting and the calendars that neverl8 should look at to see if there are meeting conflicts
So That individual requesting a meeting can see what hours I'm available.

SPIKE: Select DB

Pick Ideal DB solution. Postgresql is current front runner. Explore if there is a better option for the use case, i.e., NoSQL MongoDB or other.

Create GoLang Project for Neverl8

As a Developer.
I want a golang project that setups a starting point to build a Restful API
So that We'll have a starting point to add features for Neverl8

Acceptance

  • Go Chi
  • ORM and DB. (Spike on ORM needed?)
  • Hello World Endpoint
  • Unit test for HelloWorld
  • Testify (Mocks, Assertions) (Spike if you want to)

References:

Add OAuth2

As a security compliance officer
I want OAuth2.0 control for restricted endpoints (Host preferences for example)
So that only authorized users have access to what they should

Resource Server

NOTES:

Use google rise8 as the auth source

Schedule Meeting

As a person requesting a meeting
I want to see available meeting times for a given host
So that I can select a convenient time for me

Given a link
When I click a link
Then I see a calendar to select a day for a meeting
when I select a day I see all available meeting options
when I select a meeting option
then I see the host information
and am prompted to enter my Name and email address
when I hit submit
then a meeting is scheduled on the rise8 hiring calendar with invites for the host and candidate

CI/CD

As a developer
I want a pipeline to build, test, compliance, release, and deploy
So that I can deploy quickly, reliably, and securely

Meeting Re schedule

As a candidate
I want to be able to reschedule a meeting
so that I can still be interviewed even if I have unexpected conflicts with already scheduled interview

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.