Golang Cafe - Go job board with no recruiters and clear salary ranges

Overview

Golang Cafe

Golang Cafe is the first Go job board with no recruiters & clear salary ranges.

  • Clear salary range in each job description
  • No third party recruiters (apply directly to companies)
  • All jobs are manually vetted and reviewed
  • Browse salary trends by region
  • Browse companies hiring Go engineers and using Go in production
  • Browse Go developers
  • Weekly Job Newsletter Digest
  • Open Source

Tech Stack

Get 60-day DigitalOcean $100 Credit

Signup for DigitalOcean and get $100 Credit https://m.do.co/c/1a2d92c7bce8

Feedback?

Feel free to open an issue on GitHub or if you prefer send me an email [email protected]

License

This source code is licensed under BSD 3-Clause License

Issues
  • Refactor developer and user domain into repository pattern

    Refactor developer and user domain into repository pattern

    Implements #12

    I just wanted to upload changes I made to developer and user and see if it's aligned with what you envision the project structure to look like. @pizzatarian

    Let me know if you have feedback or you would like to approach the refactor in other direction.

    Btw, I was looking at the handlers and I think that's going to be a little more complex to refactor, because of coupling, middleware and stuff. Maybe we can address that in a future refactor?

    Also, I wasn't so sure on how to handle each repository when initializing the server, maybe centralize them somehow?

    opened by ferueda 12
  • extract styles to individual css files

    extract styles to individual css files

    One step towards tidying up the html files and avoid duplication is to organise the styles.

    The idea is to extract all styles as-is from each html file and put them in individual css files which are linked by the corresponding pages. Then we can identify common styles and put them in one file linked by all pages, leaving each page's specific styles in individual files. What do you think about it?

    Also, there's a lot of inline styling that ideally should be defined as classes in these files. Better than that would be to have a css framework like bootstrap, material, tailwind, etc. - don't know if you ever considered it.

    discussion 
    opened by dsantos 6
  • Collapsing the job ads is extremely disorientating

    Collapsing the job ads is extremely disorientating

    Scrolling down and then closing a job posting is actually really disorientating; let's say my view looks like this:

      1. Job ad
    ^ 2. Job ad
    | 3. Job ad
    |    Expanded text ..
    |    Expanded text ..
    v    Expanded text ..
         Expanded text ..
         Expanded text ..
      4. Job ad
      5. Job ad
      6. Job ad
      7. Job ad
      8. Job ad
      9. Job ad
    

    The thing on the left represents scrollbar and my browser's viewport. I scrolled down to "job ad 3" and am reading the description. I scroll down and decide I don't want it so collapse it, and now I have:

      1. Job ad
      2. Job ad
      3. Job ad
      4. Job ad
    ^ 5. Job ad
    | 6. Job ad
    | 7. Job ad
    | 8. Job ad
    v 9. Job ad
    

    And I completely missed job posting 4. In reality, it's often more than just one listing. I'm having a real hard time to continue from where I left off.

    Firefox 70 on Linux

    enhancement ui 
    opened by arp242 6
  • display newsletter subscribers count in the subscribe section

    display newsletter subscribers count in the subscribe section

    Addresses #27

    A few notes:

    • the html files indentation and alignment is off, making changes a tad difficult
    • didn't add the count to the banners
    • didn't add the count to the ksuid page
    • made the text blue, but can change to red if its a requirement
    opened by dsantos 4
  • Error: When creating a new account with same email there's no clear error message

    Error: When creating a new account with same email there's no clear error message

    When signing up, if someone by mistake use the same account as someone else or if they already have an account it is impossible to know what happened, the site just gives an alert saying error happened. It should display that someone is already using that email and should login instead of signing up.

    ui auth 
    opened by jeanlucaslima 3
  • display newsletter subscribers count

    display newsletter subscribers count

    Right now we have a few newsletter boxes but we don't show how many subscribers are currently active. This is straightforward to do as we have this information in the database in the email_subscribers table. So it will be easy to add the dynamic value on the various newsletter boxes and post a job page like below for example

    CleanShot 2022-02-12 at 19 23 45@2x

    help wanted ui ux beginner 
    opened by dm161 1
  • handle empty states (no jobs, no companies, no developers)

    handle empty states (no jobs, no companies, no developers)

    right now if the site is setup locally with no data it errors as it requires minimum 1 job 1 company and 1 developer to be present. It should not panic where no data is available but present an empty state.

    bug ui ux tech debt 
    opened by dm161 1
  • Bump github.com/microcosm-cc/bluemonday from 1.0.2 to 1.0.5

    Bump github.com/microcosm-cc/bluemonday from 1.0.2 to 1.0.5

    Bumps github.com/microcosm-cc/bluemonday from 1.0.2 to 1.0.5.

    Release notes

    Sourced from github.com/microcosm-cc/bluemonday's releases.

    Fix regression that permitted script tags to be injected

    #111 revealed that we had experienced a regression of an earlier fix and that <script> tags could be injected by relying on the use of the uppercase Cyrillic i, as when Go lowercases this it would map the UTF-8 rune to an ASCII rune. The fix prevents this by retaining the ASCII escaping.

    URL encoding fix

    A minor release to fix a HREF sanitization bug that was resolved in microcosm-cc/bluemonday#103

    v1.0.3

    No release notes provided.

    Commits
    • f0b9183 Merge pull request #112 from microcosm-cc/buro9/issue111
    • 524f142 Resolves #111 carefully escape tag names
    • 3cce251 Merge pull request #103 from mergermarket/master
    • 22ed312 Fixed link santization for JSON query params and multiple query params with s...
    • 0a75d76 Merge pull request #92 from theflyingcodr/element_regex
    • ae99c5d removing a bit of duplicateion of regex matching
    • 6d3f973 added element regex matchin to styles, tests added and readme updated
    • 6074ff7 remove idea folder
    • 356b2f0 adding ignore file and more tests
    • c276885 adding tests and ToElementMatch func
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    opened by dependabot[bot] 1
  • Fix Undefined issue on location selection

    Fix Undefined issue on location selection

    When the location filter is selected from the location suggestion on the landing page it shows undefined on firefox, this PR fixes that. You guys were using outerText to get the value from div which is not supported on firefox, look into this reference for details

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/outerText

    opened by rabingaire 1
  • Selecting text closes a job posting

    Selecting text closes a job posting

    If I expand a job posting on the home page and select some text from it, the detailed text collapses again.

    This also happens when you click just outside of the "link" or "Apply" buttons, by the way. In general, I find the entire UX of "click anywhere in the text for an action" a bit confusing to be honest.

    Firefox 70 on Linux

    duplicate 
    opened by arp242 1
  • Can't easily open job ads in new tab

    Can't easily open job ads in new tab

    To open job ads in new tab from the home page I need to expand the job, scroll to the bottom of it, middle-click "link", and I've got it in a new tab.

    Expected behaviour would be to just middle-click the job title, so I can easily open several job postings in one go. This would also improve the experience without JavaScript (applicable comment I made somewhere else a few days ago).

    This is probably as easy as just adding the href=".." here and making sure the JavaScript calls event.preventDefault(), if it doesn't already.

    duplicate 
    opened by arp242 1
  • add more fixtures for test database

    add more fixtures for test database

    right now there are just 2 jobs 1 company and 1 developer. would be good to have much more data to test with locally. It's simple to just add new rows into the latest-fixtures.sql

    help wanted beginner 
    opened by dm161 0
  • make development address configurable

    make development address configurable

    when running the server in development mode we currently run it on all interfaces so it can be accessible if you are running the code from another server or from your computer and accessing it from another device.

    Listening on all interfaces

    | <your go server> | ----  | Internet | ----- | <you trying to access the server> |
    

    allow connection from outside, listen on all interfaces

    http.ListenAndServe("0.0.0.0:9876", ...)
    

    Your machine - Loopback interface

    | <your go server> - <you trying to access the server |
    

    only allow connection from the inside, listen to the local interface only

    http.ListenAndServe("127.0.0.1:9876", ...)
    

    Right now the value is hard-coded to all interfaces

    server.go

    1038 func (s Server) Run() error {
    1039         addr := fmt.Sprintf(":%s", s.cfg.Port)
    1040         if s.cfg.Env == "dev" {
    1041                 log.Printf("local env http://localhost:%s", s.cfg.Port)
    1042                 addr = fmt.Sprintf("0.0.0.0:%s", s.cfg.Port)
    1043         }
    1044         return http.ListenAndServe(
    1045                 addr,
    1046                 middleware.HTTPSMiddleware(
    1047                         middleware.GzipMiddleware(
    1048                                 middleware.LoggingMiddleware(middleware.HeadersMiddleware(s.router, s.cfg.Env)),
    1049                         ),
    1050                         s.cfg.Env,
    1051                 ),
    1052         )
    1053 }
    

    would be awesome to have the ability to configure this via config. This also removes the annoying popup that appears whenever you run the server locally on all interfaces "allow this machine to accept incoming connections?" etc

    enhancement help wanted ux beginner backend 
    opened by dm161 0
  • move country-currency mapping to database

    move country-currency mapping to database

    We currently have a csv static file https://github.com/golang-cafe/golang.cafe/blob/master/static/country2currency.csv but would be best to have all the data portable and stored into the database. Perhaps into a new table.

    enhancement help wanted tech debt beginner backend 
    opened by dm161 0
  • dockerize Go app into Dockerfile for testing (Dockerfile.local) and production (Dockerfile)

    dockerize Go app into Dockerfile for testing (Dockerfile.local) and production (Dockerfile)

    Right now the Go server runs without Docker. The app is deployed on Digital Ocean App Platform which allows both Go and Docker as well as many other runtimes. To make the project portable and to make it easier to run it locally, it would be beneficial to Dockerize the app. We should have a prod and a test/local Dockerfile.

    Here is an example of Dockerfile from DigitalOcean https://github.com/digitalocean/sample-dockerfile/blob/main/Dockerfile

    enhancement help wanted ux tech debt beginner backend 
    opened by dm161 2
Owner
Golang Cafe
The 1st Go Job board With No Recruiters & Clear Salary Ranges
Golang Cafe
go:embed and the golang-standards project layout

An example of using the golang-standards project layout and the go:embed directive.

Leon Rowland 6 May 17, 2022
A go project generator, which aims to simplify building and releasing go projects by storing all project configuration in a single file called gojen.json, and creates appropriate workflow/git files using that config.

gojen Define your go project's configuration using a json config. This config can be used to generate a new go project for you, and can also create co

 Aatman 4 Mar 8, 2022
Nwg-drawer is a golang replacement to the nwggrid command (a part of nwg-launchers).

Nwg-drawer is a golang replacement to the nwggrid command (a part of nwg-launchers). It's being developed with sway in mind, but should also work with other wlroots-based Wayland compositors. X Window System is not supported.

Piotr Miller 60 Jun 25, 2022
Epitech BSQ in Golang

EPITECH BSQ in Golang BSQ GO What is BSQ ? The goal of the project is to find the biggest square on a map while avoiding obstacles. The file map is pa

XriM 6 Mar 7, 2022
This repository contains my Golang practice

Golang Practice Repository This repository contains my practice code for Golang. Each exercise includes a README for running the application. NOTE: TH

Arslan Mushtaq 0 Nov 28, 2021
Golang Demo - simple API to get top ranking repos from online csv file

README Generator Description A Demo Golang project, topics : Simple Http Server Get csv from endpoint Convert csv to struct sort slice of struct filte

Erik Chacon 0 Dec 3, 2021
A set of example golang code to start learning Go

Working with Go View online at: https://mkaz.blog/working-with-go/ Working with Go is a set of examples for Go (golang) to help an experienced program

Marcus Kazmierczak 1.2k Jun 15, 2022
Partially golang implement of openstack keystone client.

Keystone client Introduction The openapi folder is generated from keystone.yaml(i.e. the OAS) using openapi-generator-cli. Another OAS token.json is n

Treewu 0 Jan 6, 2022
Assignment - make a billing machine for the XYZ Cafe

Assignment In this assignment, you have to make a billing machine for the XYZ Cafe. The machine consist of a group of buttons each representing a uniq

null 0 Feb 9, 2022
A lightweight job scheduler based on priority queue with timeout, retry, replica, context cancellation and easy semantics for job chaining. Build for golang web apps.

Table of Contents Introduction What is RIO? Concern An asynchronous job processor Easy management of these goroutines and chaining them Introduction W

Supratim Samanta 49 May 3, 2022
JOB, make your short-term command as a long-term job. 将命令行规划成任务的工具

job make your short-term command as a long-term job Install Shell Install (Linux & MacOS) # binary will be $(go env GOPATH)/bin/job $: curl -sfL https

JayL 115 Jun 24, 2022
Unlimited job queue for go, using a pool of concurrent workers processing the job queue entries

kyoo: A Go library providing an unlimited job queue and concurrent worker pools About kyoo is the phonetic transcription of the word queue. It provide

Dirk Pahl 38 Jun 8, 2022
Executes jobs in separate GO routines. Provides Timeout, StartTime controls. Provides Cancel all running job before new job is run.

jobExecutor Library to execute jobs in GO routines. Provides for Job Timeout/Deadline (MaxDuration()) Job Start WallClock control (When()) Add a job b

Eswaran SK 0 Jan 10, 2022
Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks

firewall Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks. Features Easy to use Efficient and Fast Co

Golang libraries for everyone 5 May 20, 2022
Program to fetch public IP ranges of AWS, Azure and Google

cloudip This program will retrieve a list of all public IP address ranges (v4 or v6) for the three major cloud vendors: Amazon AWS, Microsoft Azure an

Scott Ware 2 May 24, 2022
FlameScope is a visualization tool for exploring different time ranges as Flame Graphs.

FlameScope FlameScope is a visualization tool for exploring different time ranges as Flame Graphs, allowing quick analysis of performance issues such

Netflix, Inc. 2.7k Jun 23, 2022
Parsing of numeric ranges from string

expand-range Parsing of numeric ranges from string. Convert "1,3-5" into [1,3,4,5]. Installation go get -u github.com/n0madic/expand-range Usage Impor

Nomadic 0 Nov 28, 2021
Package trn introduces a Range type with useful methods to perform complex operations over time ranges

Time Ranges Package trn introduces a Range type with useful methods to perform c

CappuccinoTeam 38 Apr 18, 2022
Cloud IP address ranges lookup tool + DNS subdomain enumeration + Certificate Transparency

Cloud edge Lookup an IP to find the cloud provider and other details based on the provider's published JSON data Cloud edge is a recon tool focused on

Jason Ostrom 17 Jun 1, 2022
A Simple and Clear CLI library. Dependency free.

A Simple and Clear CLI library. Dependency free. Features Nested Subcommands Uses the standard library flag package Auto-generated help Custom banners

Lea Anthony 116 Jul 2, 2022
EarlyBird is a sensitive data detection tool capable of scanning source code repositories for clear text password violations, PII, outdated cryptography methods, key files and more.

EarlyBird is a sensitive data detection tool capable of scanning source code repositories for clear text password violations, PII, outdated cryptograp

American Express 492 Jun 16, 2022
Cloud governance reports from native services in a clear and readable digest

cloudig, or Cloudigest, is a simple CLI tool for creating reports from various cloud sources with user-provided comments. It is written in Go and curr

Optum 18 Feb 18, 2022
A customized go list with index, sort, append, pop, count, clear and last item methods

golist A customized go list with index, sort, append, pop, count, clear and last item methods About The list data type has some more methods. Here are

Emeka E Ugwuanyi 0 Mar 6, 2022
Simple scaffolding for board or turn based games in Golang

Go-boardgame Go-boardgame is a simple Go package that can be used as the scaffolding to write the game logic for any board or turn based game. Status

quibbble 8 May 26, 2022
API Kanban Board With Golang

API Kanban Board Setup To run this project, follow these steps: run go get to install dependencies run cp .env.example .env setup .env to handle conne

Wahyu Dwi Ramadhan 1 Mar 10, 2022
Harbor clear tool

harborClear harborClear是用于定期清理harbor的清理工具,配合harbor2.0 自动[垃圾清理] 可让haobor仅保存一定期限内的镜像,释放磁盘空间 变量说明 变量名 作用 值 harborClear_Projects 要清理的项目,多个用,隔开 test或test,p

null 0 Dec 28, 2021
Chesscode - a way of encoding messages using a chess board and the starting set of chess pieces

chesscode Are you a spy that needs to leave an urgent top secret message for an

Logan Spears 57 May 12, 2022
Chesscode - Chesscode: a way of encoding messages using a chess board and the starting set of chess pieces

chesscode Are you a spy that needs to leave an urgent top secret message for an

Logan Spears 11 Jan 1, 2022
Show when you're out and about on a Boosted board on your Discord RPC

boosted-rpc Show when you're out an about on a Boosted board on your Discord RPC I use this with the Ride app for iOS and the IFTTT integration. Effec

Alistair Smith 13 May 3, 2022