Skip to content

Source Code of my personal sandbox website πŸ‘¨πŸΌβ€πŸ’»

License

Notifications You must be signed in to change notification settings

2beens/serj-tubin-com

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

serj-tubin.com

experimentation sandbox app

CI Actions Status CodeQL Actions Status Go Report Card Go VulnCheck

Personal tech sandbox and testing site πŸ•΅οΈβ€β™€οΈ

Hosted and available at: https://www.serj-tubin.com/

(also at https://2beens.xyz πŸ€·πŸΌβ€)

Used tech πŸ› 

  • Golang 🦫🩡to make this all happen πŸ‘¨πŸΌβ€πŸ’»
  • Dockerfile and docker/ folder contain configs for running the service stack within Docker
    • cd docker && docker-compose up -d to run it all
  • Aerospike to store those visitor board messages πŸ’Ώ
    • there are better choices than Aerospike, I know, just wanted to test Aerospike
    • update: I am thinking to replace it for something else
    • update apr 2023: aerospike killed, using postgresql for visitor board messages
  • Tried to use Elasticsearch Stack for logging and monitoring on a different server, but it was kinda hungry for memory, and exceeded the needs of this humble project (will try something else lighter)
    • 2023: Honeycomb, Prometheus/Grafana and Sentry are used now
  • Used CloudFlare to put everything behind it, but only paid plans allowed passing of real client ip in the proxied requests
  • https://freegeoip.app since 2022, https://ipbase.com, dec 22: https://ipinfo.io
    • used for geo IP data
  • http://api.openweathermap.org
    • used for weather data
  • GitHub Workflow Actions for a part of CI/CD
    • unit testing
    • static code analysis
    • deploy on new release
  • PostgreSQL to store blog posts and personal web history (netlog), notes, etc.
  • Redis to store session data
  • Prometheus is for metrics (then Grafana to visualize them)
  • Honeycomb is for distributed tracing
  • Sentry for error tracking and alerting
  • VueJS (with Vuetify) to make the frontend part (was my first Vue project, so I don't like it that much)
  • ❗️ Disclaimer: some parts of the system are deliberately unoptimized or complicated for testing β˜‘οΈ / learning πŸ‘¨πŸΌβ€πŸ« / trial πŸ›  purposes
    • Moreover, some parts are quite old now and thus not very go idiomatic

TODO: Observability (done βœ…)

Easiest way to run it: yes, Docker 🐳🐳🐳🐳

cd docker
make up
# or make up-win on windows