diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb
new file mode 100644
index 0000000..884cc92
--- /dev/null
+++ b/app/controllers/games_controller.rb
@@ -0,0 +1,13 @@
+class GamesController < ApplicationController
+ def index
+ @games = Game.all
+ end
+
+ def show
+ @game = Game.find(params["id"])
+ clocks = @game.clocks
+ resources = @game.resources
+ morales = @game.morales
+ @trackers = clocks + resources + morales
+ end
+end
diff --git a/app/controllers/trackers_controller.rb b/app/controllers/trackers_controller.rb
new file mode 100644
index 0000000..33bf53e
--- /dev/null
+++ b/app/controllers/trackers_controller.rb
@@ -0,0 +1,8 @@
+class TrackersController < ApplicationController
+ def index
+ @clocks = Clock.all
+ @resources = Resource.all
+ @morales = Morale.all
+ @trackers = @clocks + @resources + @morales
+ end
+end
diff --git a/app/models/clock.rb b/app/models/clock.rb
new file mode 100644
index 0000000..f4c3f8b
--- /dev/null
+++ b/app/models/clock.rb
@@ -0,0 +1,5 @@
+class Clock < ApplicationRecord
+ def type
+ "clock"
+ end
+end
diff --git a/app/models/game.rb b/app/models/game.rb
new file mode 100644
index 0000000..5145867
--- /dev/null
+++ b/app/models/game.rb
@@ -0,0 +1,6 @@
+class Game < ApplicationRecord
+ has_many :clocks
+ has_many :resources
+ has_many :morales
+ has_many :text_trackers
+end
diff --git a/app/models/morale.rb b/app/models/morale.rb
new file mode 100644
index 0000000..7360778
--- /dev/null
+++ b/app/models/morale.rb
@@ -0,0 +1,5 @@
+class Morale < ApplicationRecord
+ def type
+ "morale"
+ end
+end
diff --git a/app/models/resource.rb b/app/models/resource.rb
new file mode 100644
index 0000000..51a0187
--- /dev/null
+++ b/app/models/resource.rb
@@ -0,0 +1,5 @@
+class Resource < ApplicationRecord
+ def type
+ "resources"
+ end
+end
diff --git a/app/models/text_tracker.rb b/app/models/text_tracker.rb
new file mode 100644
index 0000000..202d79a
--- /dev/null
+++ b/app/models/text_tracker.rb
@@ -0,0 +1,2 @@
+class TextTracker < ApplicationRecord
+end
diff --git a/app/models/text_tracker_message.rb b/app/models/text_tracker_message.rb
new file mode 100644
index 0000000..2fe4910
--- /dev/null
+++ b/app/models/text_tracker_message.rb
@@ -0,0 +1,2 @@
+class TextTrackerMessage < ApplicationRecord
+end
diff --git a/app/views/games/index.html.erb b/app/views/games/index.html.erb
new file mode 100644
index 0000000..b095945
--- /dev/null
+++ b/app/views/games/index.html.erb
@@ -0,0 +1,4 @@
+
Games
+<% @games.each do |game| %>
+
+<% end %>
diff --git a/app/views/games/show.html.erb b/app/views/games/show.html.erb
new file mode 100644
index 0000000..af90ded
--- /dev/null
+++ b/app/views/games/show.html.erb
@@ -0,0 +1,4 @@
+<%= @game.name %>
+<% @trackers.each do |tracker| %>
+ <%= tracker.name %>(<%= tracker.type %>)
+<% end %>
diff --git a/app/views/trackers/index.html.erb b/app/views/trackers/index.html.erb
new file mode 100644
index 0000000..07bab36
--- /dev/null
+++ b/app/views/trackers/index.html.erb
@@ -0,0 +1,4 @@
+Trackers
+<% @trackers.each do |tracker| %>
+ <%= tracker.name %>(<%= tracker.type %>)
+<% end %>
diff --git a/config/routes.rb b/config/routes.rb
index 48254e8..7d53b05 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -11,4 +11,7 @@ Rails.application.routes.draw do
# Defines the root path route ("/")
# root "posts#index"
+ resources :games do
+ resources :trackers
+ end
end
diff --git a/db/migrate/20260202002624_create_clocks.rb b/db/migrate/20260202002624_create_clocks.rb
new file mode 100644
index 0000000..235b0e7
--- /dev/null
+++ b/db/migrate/20260202002624_create_clocks.rb
@@ -0,0 +1,11 @@
+class CreateClocks < ActiveRecord::Migration[8.1]
+ def change
+ create_table :clocks do |t|
+ t.integer :game_id
+ t.string :name
+ t.integer :value
+ t.integer :max_value
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20260202002634_create_resources.rb b/db/migrate/20260202002634_create_resources.rb
new file mode 100644
index 0000000..89a630c
--- /dev/null
+++ b/db/migrate/20260202002634_create_resources.rb
@@ -0,0 +1,11 @@
+class CreateResources < ActiveRecord::Migration[8.1]
+ def change
+ create_table :resources do |t|
+ t.integer :game_id
+ t.string :name
+ t.integer :value
+ t.integer :max_value
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20260202002643_create_morales.rb b/db/migrate/20260202002643_create_morales.rb
new file mode 100644
index 0000000..6c9b7b1
--- /dev/null
+++ b/db/migrate/20260202002643_create_morales.rb
@@ -0,0 +1,12 @@
+class CreateMorales < ActiveRecord::Migration[8.1]
+ def change
+ create_table :morales do |t|
+ t.integer :game_id
+ t.string :name
+ t.float :value
+ t.float :min_value
+ t.float :max_value
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20260202002709_create_text_trackers.rb b/db/migrate/20260202002709_create_text_trackers.rb
new file mode 100644
index 0000000..bc9cd67
--- /dev/null
+++ b/db/migrate/20260202002709_create_text_trackers.rb
@@ -0,0 +1,9 @@
+class CreateTextTrackers < ActiveRecord::Migration[8.1]
+ def change
+ create_table :text_trackers do |t|
+ t.integer :game_id
+ t.string :name
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20260202002713_create_text_tracker_messages.rb b/db/migrate/20260202002713_create_text_tracker_messages.rb
new file mode 100644
index 0000000..92fd9a5
--- /dev/null
+++ b/db/migrate/20260202002713_create_text_tracker_messages.rb
@@ -0,0 +1,9 @@
+class CreateTextTrackerMessages < ActiveRecord::Migration[8.1]
+ def change
+ create_table :text_tracker_messages do |t|
+ t.integer :text_tracker_id
+ t.text :text
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20260202002823_create_games.rb b/db/migrate/20260202002823_create_games.rb
new file mode 100644
index 0000000..a3bb178
--- /dev/null
+++ b/db/migrate/20260202002823_create_games.rb
@@ -0,0 +1,8 @@
+class CreateGames < ActiveRecord::Migration[8.1]
+ def change
+ create_table :games do |t|
+ t.string :name
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 03e7368..3af2109 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,5 +10,52 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[8.1].define(version: 0) do
+ActiveRecord::Schema[8.1].define(version: 2026_02_02_002823) do
+ create_table "clocks", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.integer "game_id"
+ t.integer "max_value"
+ t.string "name"
+ t.datetime "updated_at", null: false
+ t.integer "value"
+ end
+
+ create_table "games", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.string "name"
+ t.datetime "updated_at", null: false
+ end
+
+ create_table "morales", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.integer "game_id"
+ t.float "max_value"
+ t.float "min_value"
+ t.string "name"
+ t.datetime "updated_at", null: false
+ t.float "value"
+ end
+
+ create_table "resources", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.integer "game_id"
+ t.integer "max_value"
+ t.string "name"
+ t.datetime "updated_at", null: false
+ t.integer "value"
+ end
+
+ create_table "text_tracker_messages", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.text "text"
+ t.integer "text_tracker_id"
+ t.datetime "updated_at", null: false
+ end
+
+ create_table "text_trackers", force: :cascade do |t|
+ t.datetime "created_at", null: false
+ t.integer "game_id"
+ t.string "name"
+ t.datetime "updated_at", null: false
+ end
end
diff --git a/test/models/clock_test.rb b/test/models/clock_test.rb
new file mode 100644
index 0000000..2012c15
--- /dev/null
+++ b/test/models/clock_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class ClockTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/game_test.rb b/test/models/game_test.rb
new file mode 100644
index 0000000..6628fae
--- /dev/null
+++ b/test/models/game_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class GameTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/morale_test.rb b/test/models/morale_test.rb
new file mode 100644
index 0000000..4835184
--- /dev/null
+++ b/test/models/morale_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class MoraleTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/resource_test.rb b/test/models/resource_test.rb
new file mode 100644
index 0000000..be745ce
--- /dev/null
+++ b/test/models/resource_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class ResourceTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/text_tracker_message_test.rb b/test/models/text_tracker_message_test.rb
new file mode 100644
index 0000000..ed6c135
--- /dev/null
+++ b/test/models/text_tracker_message_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class TextTrackerMessageTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/text_tracker_test.rb b/test/models/text_tracker_test.rb
new file mode 100644
index 0000000..45c909e
--- /dev/null
+++ b/test/models/text_tracker_test.rb
@@ -0,0 +1,7 @@
+require "test_helper"
+
+class TextTrackerTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end