Skip to content

arttet/reddit-feed-api

Repository files navigation

Reddit Feed API

Go build tests codecov Go Report Card Swagger Validator License

Environment Setup

  1. Install the latest Go from https://go.dev/
  2. Install make and curl tools.
  3. Install PostgreSQL 13 or later from https://www.postgresql.org/download/
  4. Install the latest Jaeger from https://www.jaegertracing.io/
  5. Install the latest Prometheus from https://prometheus.io/
  6. Install OpenJDK 17 from https://openjdk.java.net/projects/jdk/17/
  7. Install Kafka 3.1.0 or later from https://kafka.apache.org/
  8. Install the latest Docker from https://www.docker.com/

Usage

$ make help
  Local commands
help:    Show this help
all:     Run the all build commands
reqs:    Install requirements
deps:    Build and install Go dependencies
gen:     Generate Go code
build:   Compile the current package and all of its dependencies
test:    Execute the unit tests
bench:   Execute the benchmark tests
lint:    Check the current package to catch common mistakes and improve the code
tidy:    Cleanup go.mod
fmt:     Format *.go and *.proto files using gofmt and clang-format
cover:   Show the cover report
grpcui:  Run the grpcui tool
clean:   Remove generated artifacts
update:  Update dependencies as recorded in the go.mod and go.sum files
  Docker commands
image:           Build Dockerfile
debug-image:     Build Dockerfile.debug
dc-build:        Build docker-compose.yaml
up:              Up reddit-feed-api
down:            Down reddit-feed-api
rm:              Remove Docker artifacts
  CLI commands
run:             Run reddit-feed-api locally
cli-create:      Run the CreatePostsV1 handle
cli-generate:    Run the GenerateFeedV1 handle
producer:        Run the Kafka producer command
consumer:        Run the Kafka consumer command

Reddit Feed API Overview

Method Path Description
POST /v1/posts Create new posts
GET /v1/feed/{page_id} Generate a feed of posts

Metrics Server

Status Server

pgcli "postgresql://docker:docker@localhost:5432/reddit_feed_api"
goose -dir migrations/reddit-feed-api postgres "postgresql://docker:docker@localhost:5432/reddit_feed_api" status
goose -dir migrations/reddit-feed-api postgres "postgresql://docker:docker@localhost:5432/reddit_feed_api" up
goose -dir migrations/reddit-feed-api postgres "postgresql://docker:docker@localhost:5432/reddit_feed_api" status

Tools (Use docker-compose)