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

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

Owner
Golang Cafe
The 1st Go Job board With No Recruiters & Clear Salary Ranges
Golang Cafe
Comments
  • 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?

  • 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.

  • 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

  • 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
  • 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.

  • unable to load config: SITE_LOGO_IMAGE_ID cannot be empty

    unable to load config: SITE_LOGO_IMAGE_ID cannot be empty

    I cloned the repo and ran setup-database.sh script and then run-local-webserver.sh script but I'm getting unable to load config: SITE_LOGO_IMAGE_ID cannot be empty error every time I run it

    Is there something that I need to set before the first run? I followed the setup guide which mentions only the above 2 steps

  • 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

  • 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.

  • 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.

  • 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

  • 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

  • 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

  • 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

  • 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.

  • 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

go:embed and the golang-standards project layout

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

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

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).

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.

Dec 23, 2022
Epitech BSQ in Golang
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

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

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

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

Dec 23, 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

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

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

Dec 9, 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

Nov 12, 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

Dec 21, 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

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

Oct 9, 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

Aug 21, 2022
FlameScope is a visualization tool for exploring different time ranges as Flame Graphs.
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

Dec 27, 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

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

Aug 18, 2022
Cloud IP address ranges lookup tool + DNS subdomain enumeration + Certificate Transparency
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

Dec 12, 2022
A Simple and Clear CLI library. Dependency free.
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

Jan 1, 2023