chore: init commit

in worker.../repo/GITFOLDER.zip is the .git folder.
This commit is contained in:
2026-08-11 14:44:09 -04:00
parent 0012380fd3
commit 392781f7aa
781 changed files with 65944 additions and 0 deletions

View File

@@ -0,0 +1,126 @@
<%= form_with model: @stock, url: @stock.persisted? ? admin_stock_path(@stock) : admin_stocks_path, builder: Admin::FormBuilder, class: "space-y-6" do |f| %>
<div class="bg-white shadow-sm ring-1 ring-gray-900/5 rounded-lg">
<div class="px-6 py-6">
<h3 class="text-lg font-medium text-gray-900 mb-6">Basic Information</h3>
<%= f.text_field :ticker,
label: "Ticker Symbol",
hint: "Stock ticker symbol (e.g., AAPL, GOOGL)",
placeholder: "AAPL" %>
<%= f.text_field :company_name,
label: "Company Name",
hint: "Full company name",
placeholder: "Apple Inc." %>
<%= f.text_field :company_website,
label: "Company Website",
hint: "Company website URL (must be HTTP or HTTPS)",
placeholder: "https://www.apple.com" %>
<%= f.text_field :stock_exchange,
label: "Stock Exchange",
hint: "Exchange where stock is traded (e.g., NASDAQ, NYSE)",
placeholder: "NASDAQ" %>
<%= f.text_area :description,
label: "Description",
hint: "Company description and overview",
rows: 4 %>
<div class="mt-6 pt-6 border-t border-gray-200">
<h4 class="text-md font-medium text-gray-900 mb-4">Pricing</h4>
<%= f.currency_field :price_cents,
label: "Current Price",
hint: "Current stock price in dollars",
multiplier: 0.01,
decimals: 2 %>
<%= f.currency_field :yesterday_price_cents,
label: "Yesterday's Price",
hint: "Previous day's closing price in dollars",
multiplier: 0.01,
decimals: 2 %>
</div>
<div class="mt-6 pt-6 border-t border-gray-200">
<h4 class="text-md font-medium text-gray-900 mb-4">Company Details</h4>
<%= f.number_field :employees,
label: "Number of Employees",
hint: "Total number of employees" %>
<%= f.text_field :industry,
label: "Industry",
hint: "Industry sector",
placeholder: "Technology" %>
</div>
<div class="mt-6 pt-6 border-t border-gray-200">
<h4 class="text-md font-medium text-gray-900 mb-4">Financial Metrics</h4>
<%= f.text_field :cash_flow,
label: "Cash Flow",
hint: "Company cash flow" %>
<%= f.text_field :debt,
label: "Debt",
hint: "Total company debt" %>
<%= f.text_field :debt_to_equity,
label: "Debt to Equity Ratio",
hint: "Debt to equity ratio" %>
<%= f.text_field :profit_margin,
label: "Profit Margin",
hint: "Company profit margin" %>
<%= f.text_field :sales_growth,
label: "Sales Growth",
hint: "Sales growth percentage" %>
</div>
<div class="mt-6 pt-6 border-t border-gray-200">
<h4 class="text-md font-medium text-gray-900 mb-4">Industry Averages</h4>
<%= f.text_field :industry_avg_debt_to_equity,
label: "Industry Avg Debt to Equity",
hint: "Industry average debt to equity ratio" %>
<%= f.text_field :industry_avg_profit_margin,
label: "Industry Avg Profit Margin",
hint: "Industry average profit margin" %>
<%= f.text_field :industry_avg_sales_growth,
label: "Industry Avg Sales Growth",
hint: "Industry average sales growth" %>
</div>
<div class="mt-6 pt-6 border-t border-gray-200">
<h4 class="text-md font-medium text-gray-900 mb-4">Additional Information</h4>
<%= f.text_area :management,
label: "Management",
hint: "Information about company management",
rows: 4 %>
<%= f.text_area :competitor_names,
label: "Competitor Names",
hint: "List of competitor companies",
rows: 3 %>
</div>
<div class="mt-6 pt-6 border-t border-gray-200">
<%= f.boolean_field :archived,
label: "Archived",
hint: "Mark this stock as archived (hidden from active listings)" %>
</div>
</div>
</div>
<div class="flex items-center justify-end gap-x-4">
<%= f.cancel_button "Cancel", url: @stock.persisted? ? admin_stock_path(@stock) : admin_stocks_path %>
<%= f.submit_button @stock.persisted? ? "Update Stock" : "Create Stock" %>
</div>
<% end %>

View File

@@ -0,0 +1,7 @@
<div class="max-w-7xl mx-auto">
<%= admin_breadcrumbs(@breadcrumbs) %>
<h1 class="text-3xl font-bold text-gray-900 mb-8">Edit Stock</h1>
<%= render "form", stock: @stock %>
</div>

View File

@@ -0,0 +1,22 @@
<div class="max-w-7xl mx-auto">
<%= admin_breadcrumbs(@breadcrumbs) %>
<%= admin_table(
@stocks,
columns: [
{ attribute: :id, label: "ID", sortable: true },
{ attribute: :ticker, label: "Ticker", sortable: true },
{ attribute: :company_name, label: "Company Name", sortable: true },
{ attribute: :company_website, label: "Website", sortable: false },
{ attribute: :current_price, label: "Current Price", sortable: false },
{ attribute: :archived, label: "Archived", sortable: true }
],
title: "Stocks",
actions: link_to(
"New Stock",
new_admin_stock_path,
class: "inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700"
),
empty_message: "No stocks found. Create your first stock to get started."
) %>
</div>

View File

@@ -0,0 +1,7 @@
<div class="max-w-7xl mx-auto">
<%= admin_breadcrumbs(@breadcrumbs) %>
<h1 class="text-3xl font-bold text-gray-900 mb-8">New Stock</h1>
<%= render "form", stock: @stock %>
</div>

View File

@@ -0,0 +1,150 @@
<div class="max-w-7xl mx-auto">
<%= admin_breadcrumbs(@breadcrumbs) %>
<div class="bg-white shadow-sm ring-1 ring-gray-900/5 rounded-lg mb-6">
<div class="px-6 py-6">
<div class="flex items-center justify-between mb-6">
<h2 class="text-2xl font-bold text-gray-900"><%= @stock.ticker %></h2>
<div class="flex gap-3">
<%= link_to edit_admin_stock_path(@stock),
class: "inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50" do %>
<i class="fas fa-edit -ml-1 mr-2 h-5 w-5 text-gray-500"></i>
Edit
<% end %>
<%= link_to admin_stock_path(@stock),
data: { turbo_method: :delete, turbo_confirm: "Are you sure you want to delete this stock?" },
class: "inline-flex items-center px-4 py-2 border border-red-300 shadow-sm text-sm font-medium rounded-md text-red-700 bg-white hover:bg-red-50" do %>
<i class="fas fa-trash -ml-1 mr-2 h-5 w-5 text-red-500"></i>
Delete
<% end %>
</div>
</div>
<%= admin_show_attributes(
@stock,
attributes: %i[id ticker company_name company_website stock_exchange archived created_at updated_at]
) %>
<!-- Description -->
<% if @stock.description.present? %>
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Description</h3>
<p class="text-sm text-gray-900 whitespace-pre-wrap"><%= @stock.description %></p>
</div>
<% end %>
<!-- Price Information -->
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Price Information</h3>
<dl class="grid grid-cols-1 gap-4 sm:grid-cols-3">
<div>
<dt class="text-sm font-medium text-gray-500">Current Price</dt>
<dd class="mt-1 text-sm text-gray-900"><%= number_to_currency(@stock.current_price) %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Yesterday's Price</dt>
<dd class="mt-1 text-sm text-gray-900"><%= number_to_currency(@stock.yesterday_price) %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Percentage Change</dt>
<dd class="mt-1 text-sm">
<span class="<%= @stock.percentage_change.positive? ? 'text-green-600' : 'text-red-600' %>">
<%= @stock.percentage_change_formatted %>
</span>
</dd>
</div>
</dl>
</div>
<!-- Company Information -->
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Company Information</h3>
<dl class="grid grid-cols-1 gap-4 sm:grid-cols-2">
<div>
<dt class="text-sm font-medium text-gray-500">Employees</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.employees || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Industry</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.industry || "—" %></dd>
</div>
</dl>
</div>
<!-- Financial Metrics -->
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Financial Metrics</h3>
<dl class="grid grid-cols-1 gap-4 sm:grid-cols-3">
<div>
<dt class="text-sm font-medium text-gray-500">Cash Flow</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.cash_flow || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Debt</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.debt || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Debt to Equity</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.debt_to_equity || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Profit Margin</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.profit_margin || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Sales Growth</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.sales_growth || "—" %></dd>
</div>
</dl>
</div>
<!-- Industry Averages -->
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Industry Averages</h3>
<dl class="grid grid-cols-1 gap-4 sm:grid-cols-3">
<div>
<dt class="text-sm font-medium text-gray-500">Avg Debt to Equity</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.industry_avg_debt_to_equity || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Avg Profit Margin</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.industry_avg_profit_margin || "—" %></dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-500">Avg Sales Growth</dt>
<dd class="mt-1 text-sm text-gray-900"><%= @stock.industry_avg_sales_growth || "—" %></dd>
</div>
</dl>
</div>
<!-- Management -->
<% if @stock.management.present? %>
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Management</h3>
<p class="text-sm text-gray-900 whitespace-pre-wrap"><%= @stock.management %></p>
</div>
<% end %>
<!-- Competitors -->
<% if @stock.competitor_names.present? %>
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Competitor Names</h3>
<p class="text-sm text-gray-900 whitespace-pre-wrap"><%= @stock.competitor_names %></p>
</div>
<% end %>
<!-- Portfolio Stocks -->
<% if @stock.portfolio_stocks.any? %>
<div class="mt-6 pt-6 border-t border-gray-200">
<h3 class="text-sm font-medium text-gray-500 mb-3">Portfolio Stocks (<%= @stock.portfolio_stocks.count %>)</h3>
<p class="text-sm text-gray-500">This stock is held in <%= @stock.portfolio_stocks.count %> portfolio(s)</p>
</div>
<% end %>
</div>
</div>
<div class="flex gap-3">
<%= link_to "Back to Stocks", admin_stocks_path,
class: "inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50" %>
</div>
</div>