This is a simple "Today I Learned" (TIL) tracker application built with Ruby on Rails, following the 37signals development philosophy (minimal JS, server-rendered HTML, hand-crafted CSS).
It serves two purposes:
- A functional application to log personal learnings.
- A self-referential job application artifact for the 37signals Junior Rails Programmer role, demonstrating rapid learning, adherence to specific constraints, and core Rails skills.
This application is deployed on Render.
Live URL: https://til-tracker.onrender.com/
- Log new learnings with title, body, tags, and the date learned.
- View all learnings, sorted by date learned.
- Filter learnings by clicking on tags.
- Delete multiple learnings at once.
- Static pages including:
- About The App: Briefly explains the project.
- Hire Me: Presents a case for hiring the developer (you!), linking to CV and Cover Letter.
- Writing Samples: Showcases relevant writing examples.
This application was built specifically for the 37signals Junior Rails Programmer application process over approximately two weeks, alongside other commitments. It represents a focused effort to learn Ruby on Rails from scratch by building a practical tool that adheres to the company's known principles (Hotwire, no CSS frameworks, simplicity). The process involved rapid learning, leveraging documentation and AI assistance, debugging environment issues (rbenv, bundler, PostgreSQL), implementing features iteratively, and documenting the journey in the app's own learning log and associated planning files (PLANNING.md, TASK.md, LEARNINGS.md).
- Ruby 3.2.2 (Managed via
rbenv)
- PostgreSQL
rbenv(or similar Ruby version manager)- Bundler
- Clone the repository:
git clone [repository-url] cd ruby-app-37s/til_tracker - Ensure correct Ruby version:
rbenv install 3.2.2 # If not already installed rbenv local 3.2.2
- Install dependencies:
# Reason: Use rbenv exec for consistency, avoids potential shell issues with gem installation rbenv exec bundle install
- Create and migrate the database:
rbenv exec rails db:create rbenv exec rails db:migrate
-
Start the development server:
# Reason: Use ./bin/dev directly. `rbenv exec bin/dev` may fail due to shell/rbenv path issues. ./bin/devThe server typically runs on
http://localhost:3000by default.If port 3000 is in use, you can specify a different port using the
PORTenvironment variable:PORT=8000 ./bin/dev
Then visit
http://localhost:8000(or your chosen port).
- Execute the RSpec test suite:
rbenv exec bundle exec rspec
- No Frontend Framework: Uses Hotwire (Turbo/Stimulus) for interactivity.
- No CSS Framework: Uses simple, hand-crafted CSS (
app/assets/stylesheets/application.css). - Simple Tagging: Uses a basic string field for tags to maintain simplicity.
- No Authentication: Focuses on core CRUD functionality.