A minimal RSS reader written in OCaml. Inspired by Feedly, but without the bloat.
Barebones, totally local development environment.
- central cloned + running locally
- opam
brew install opam
- dune
- yarn
- postgres
- libpq
brew install libpq
- openssl
brew install openssl
initdb data
pg_ctl -D data -l logfile start
createdb reader
make install
cd server && make migrate
Create database.env
at the root of the repository:
PGUSER=jakekinsella
PGPASSWORD=
PGHOST=localhost
PGPORT=5432
PGDATABASE=reader
cd server && make start
cd server && make puller
cd server && make feed-pruner
cd server && make item-pruner
cd ui && make start
Navigate to http://localhost:3000
Refresh central dependencies:
cd ui && make refresh start
Deployed as a Kubernetes cluster.
minikube start
eval $(minikube docker-env)
minikube addons enable ingress
minikube tunnel
sudo sh -c 'echo "127.0.0.1 reader.localhost" >> /etc/hosts'
Create a certificate called cert
:
openssl req -newkey rsa:4096 \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out cert.crt \
-keyout cert.key
Create secrets.env
in the root of the repo:
USER_PASSWORD=???
make local-publish
make local-deploy
... some amount of waiting ...
kubectl get pods
should show the containers starting up
Navigate to https://reader.localhost
Deploy a single node Kubernetes cluster in AWS.
Create secrets.env
in the root of the repo:
USER_PASSWORD=???
Environment variables:
export AWS_ACCESS_KEY_ID=???
export AWS_SECRET_ACCESS_KEY=???
export AWS_ACCOUNT_ID=???
export AWS_DEFAULT_REGION=us-east-1
Initialize the build depedencies:
make aws-init
Build the AMI:
make aws-image
Set up the ECR repo:
make aws-repo
Manually create+install an EC2 Key Pair in the AWS Console called "reader".
Build the resources:
make aws-build
Note the value of control_plane_ip
.
... wait awhile ...
Export the Control Plane IP:
export CONTROL_PLANE_IP=???
Deploy the cluster:
make cluster-publish
make cluster-deploy VERSION=???
... wait ~10minutes time (until sudo kubectl get pods
shows all the containers running) ...
- Don't show empty add to board menu
- prevent overwriting existing feeds
- need to normalize feed source urls (so that different forms of URL are equal to eachother)