Add static pages

Seto Elkahfi committed Jun 17, 2026 at 15:16 UTC d57a12f946b4dfad144d02e8c0e18675d8ba6e10
7 files changed +404
app/controllers/pages_controller.rb
+8
index aac3dfe..8d88739 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -5,4 +5,12 @@ class PagesController < ApplicationController render :dashboard end end + + def about; end + + def contact; end + + def privacy; end + + def terms; end end
app/views/layouts/application.html.erb
+6
index 2c5936f..1246aac 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -39,6 +39,12 @@ <div class="max-w-6xl mx-auto px-4 sm:px-6 py-8 flex items-center justify-between text-xs text-gray-500"> <span> Get <a href="https://getsigit.5mb.app/" class="hover:text-gray-300 transition-colors" target="_blank" rel="noopener noreferrer">siGit Code &amp; Deploy</a></span> + <nav class="flex items-center gap-4"> + <%= link_to "About", about_path, class: "hover:text-gray-300 transition-colors" %> + <%= link_to "Privacy", privacy_path, class: "hover:text-gray-300 transition-colors" %> + <%= link_to "Terms", terms_path, class: "hover:text-gray-300 transition-colors" %> + <%= link_to "Contact", contact_path, class: "hover:text-gray-300 transition-colors" %> + </nav> <div class="flex items-center"> Auth and Mail by&nbsp;<a href="https://smbcloud.xyz/" class="hover:text-gray-300 transition-colors" target="_blank" rel="noopener noreferrer">smbCloud Platform</a> </div>
app/views/pages/about.html.erb
+69
new file mode 100644 index 0000000..07bbdc2 --- /dev/null +++ b/app/views/pages/about.html.erb @@ -0,0 +1,69 @@ +<% content_for :title, "About" %> + +<div class="max-w-3xl mx-auto px-4 sm:px-6 py-16 sm:py-20"> + <div class="text-center mb-12"> + <img src="/icon.png" alt="siGit Code &amp; Deploy" class="mx-auto h-20 w-auto rounded-2xl border border-surface-600 shadow-lg"> + </div> + + <div class="prose-readme"> + <h1>siGit Code &amp; Deploy</h1> + + <p> + siGit is Git hosting for the AI era. Version your repositories, publish + open-weights models with full model cards and LFS-backed files, and hand the + keys to your AI agent over the Agent Client Protocol. Code and models live + side by side, in the same storage and the same calm UI. + </p> + + <h2>Why this exists</h2> + <p> + We kept running into the same split. Source code lived in one place, model + weights lived somewhere else, and the two never really met. Pushing a model + meant a different tool, a different account, and weights scattered across + services. + </p> + <p> + So we built siGit. It is plain Git underneath, so nothing about your workflow + has to change, but it treats a multi-gigabyte model the same way it treats a + source file: something you can host, browse, and version without fuss. + </p> + + <h2>What it does</h2> + <ul> + <li>Host public and private repositories with fast diffs and deep file browsing</li> + <li>Clone, fetch, and push over Git with token-authenticated HTTPS</li> + <li>Publish open-weights models with model cards parsed straight from your README</li> + <li>Store large weights with Git LFS, and see sizes, formats, and quants at a glance</li> + <li>Connect AI coding agents over the Agent Client Protocol</li> + <li>Use the JSON API and the siGit Code &amp; Deploy desktop and mobile apps</li> + <li>Deploy through smbCloud</li> + </ul> + + <h2>Who makes it</h2> + <p> + siGit is built by <a href="https://splitfire.se" target="_blank" rel="noopener noreferrer">Splitfire AB</a>, + a small software company in Sweden. Authentication, email, and deploys run on + the <a href="https://smbcloud.xyz/" target="_blank" rel="noopener noreferrer">smbCloud</a> + platform. We use siGit ourselves daily, which keeps the bug list honest. + </p> + <p> + Questions or feedback: + <a href="mailto:splitfire@setoelkahfi.se">splitfire@setoelkahfi.se</a>. + </p> + </div> + + <div class="mt-12 border-t border-surface-600 pt-8 text-center"> + <h2 class="text-lg font-semibold text-gray-100 mb-5">Get the app</h2> + <div class="flex flex-wrap items-center justify-center gap-4"> + <a href="https://apps.apple.com/se/app/sigit-git-client-code-editor/id6753018849" target="_blank" rel="noopener noreferrer" aria-label="Download on the App Store"> + <img src="/images/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg" alt="Download on the App Store" class="h-10"> + </a> + <a href="https://play.google.com/store/apps/details?id=xyz.smbcloud.SiGit" target="_blank" rel="noopener noreferrer" aria-label="Get it on Google Play"> + <img src="/images/GetItOnGooglePlay_Badge_Web_color_English.png" alt="Get it on Google Play" class="h-10"> + </a> + <a href="https://apps.microsoft.com/detail/xp9k321rf5mzsz?ocid=webpdpshare" target="_blank" rel="noopener noreferrer" aria-label="Get it from the Microsoft Store"> + <img src="/images/MicrosoftStore_Badge_Web_dark.svg" alt="Get it from the Microsoft Store" class="h-10"> + </a> + </div> + </div> +</div>
app/views/pages/contact.html.erb
+50
new file mode 100644 index 0000000..09571f4 --- /dev/null +++ b/app/views/pages/contact.html.erb @@ -0,0 +1,50 @@ +<% content_for :title, "Contact" %> + +<div class="max-w-3xl mx-auto px-4 sm:px-6 py-16 sm:py-20"> + <div class="text-center mb-12"> + <img src="/icon.png" alt="siGit Code &amp; Deploy" class="mx-auto h-20 w-auto rounded-2xl border border-surface-600 shadow-lg"> + </div> + + <div class="prose-readme"> + <h1>Contact</h1> + + <p> + Found a bug? Have an idea for the platform? Want to tell us something broke + in an interesting way? We are a small team and we read everything. + </p> + + <div class="not-prose my-8 rounded-sm border border-surface-500 border-l-4 border-l-brand-500 bg-surface-800 px-5 py-4"> + <a href="mailto:splitfire@setoelkahfi.se" class="text-lg font-semibold text-brand-500 hover:underline break-all"> + splitfire@setoelkahfi.se + </a> + </div> + + <h2>Good reasons to write</h2> + <ul> + <li>Bug reports, the more specific the better</li> + <li>Feature requests for sigit.si or the siGit Code &amp; Deploy app</li> + <li>Trouble pushing code or publishing an open-weights model</li> + <li>Questions about the desktop app or the Agent Client Protocol integration</li> + <li>Problems with the smbCloud deploy integration</li> + <li>Partnership or collaboration ideas</li> + <li>Anything else, honestly</li> + </ul> + + <p>We are based in Sweden. Response times vary but we do respond.</p> + </div> + + <div class="mt-12 border-t border-surface-600 pt-8 text-center"> + <h2 class="text-lg font-semibold text-gray-100 mb-5">Get the app</h2> + <div class="flex flex-wrap items-center justify-center gap-4"> + <a href="https://apps.apple.com/se/app/sigit-git-client-code-editor/id6753018849" target="_blank" rel="noopener noreferrer" aria-label="Download on the App Store"> + <img src="/images/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg" alt="Download on the App Store" class="h-10"> + </a> + <a href="https://play.google.com/store/apps/details?id=xyz.smbcloud.SiGit" target="_blank" rel="noopener noreferrer" aria-label="Get it on Google Play"> + <img src="/images/GetItOnGooglePlay_Badge_Web_color_English.png" alt="Get it on Google Play" class="h-10"> + </a> + <a href="https://apps.microsoft.com/detail/xp9k321rf5mzsz?ocid=webpdpshare" target="_blank" rel="noopener noreferrer" aria-label="Get it from the Microsoft Store"> + <img src="/images/MicrosoftStore_Badge_Web_dark.svg" alt="Get it from the Microsoft Store" class="h-10"> + </a> + </div> + </div> +</div>
app/views/pages/privacy.html.erb
+139
new file mode 100644 index 0000000..1c659e5 --- /dev/null +++ b/app/views/pages/privacy.html.erb @@ -0,0 +1,139 @@ +<% content_for :title, "Privacy Policy" %> + +<div class="max-w-3xl mx-auto px-4 sm:px-6 py-16 sm:py-20"> + <div class="text-center mb-12"> + <img src="/icon.png" alt="siGit Code &amp; Deploy" class="mx-auto h-20 w-auto rounded-2xl border border-surface-600 shadow-lg"> + </div> + + <div class="prose-readme"> + <h1>Privacy Policy</h1> + <p class="text-gray-500"><em>Last updated: June 17, 2026</em></p> + + <p> + siGit Code &amp; Deploy is a Git hosting platform for code and open-weights + models, run by Splitfire AB in Sweden. This policy explains what we collect + when you use the website at sigit.si, the desktop and mobile apps, and the + Git and API endpoints, and what we do with it. + </p> + + <h2>What we collect</h2> + + <h3>Account information</h3> + <p> + When you create an account we collect your email address, username, and a + password. Accounts are handled through smbCloud Auth, our authentication + provider. Passwords are stored hashed by smbCloud and are never visible to + us in plain text. + </p> + + <h3>Content you publish</h3> + <p> + When you push code, publish a model, or interact with the platform, we store + what you send us so we can host it. That includes: + </p> + <ul> + <li>Repositories, commits, branches, and the files in them</li> + <li>Model repositories, model cards, and Git LFS objects such as GGUF or safetensors weights</li> + <li>Stars and other actions you take on public content</li> + <li>Profile details you choose to add</li> + </ul> + + <h3>Technical data</h3> + <p>We automatically record some data when you connect:</p> + <ul> + <li>IP address and approximate region</li> + <li>Browser or client type and version</li> + <li>Request logs for the website, the JSON API, and Git over HTTPS</li> + <li>Error and crash reports</li> + </ul> + + <h2>Public and private content</h2> + <p> + Anything you mark public, including public repositories and model + repositories, is visible to anyone on the internet, along with your username + and the content of those repositories. Private content is visible only to you + and the people you grant access. Treat the public or private setting as the + control over who can see your work. + </p> + + <h2>How we use your information</h2> + <ul> + <li>Run and maintain the platform and host your repositories and models</li> + <li>Authenticate you and keep your account secure</li> + <li>Serve clones, fetches, and pushes over Git, and requests through the API</li> + <li>Send account email such as verification and password resets</li> + <li>Diagnose problems and improve performance and reliability</li> + <li>Detect and prevent abuse and fraud</li> + </ul> + + <h2>Third-party services</h2> + <p> + We rely on the smbCloud platform for authentication, transactional email, + and deployment. These services process the data needed to do their job under + their own terms. We do not sell your personal information. + </p> + + <h2>Storage and security</h2> + <p> + Traffic to the website, the API, and Git over HTTPS is encrypted in transit. + We use access controls and keep our systems patched. No system is perfectly + secure, but we work to protect what you store with us. + </p> + <p> + We keep your account data and content while your account is active. When you + remove your account, we delete your account and its associated content, + subject to any legal retention obligations and short-lived backups that age + out on their own. + </p> + + <h2>Your rights</h2> + <p>You can:</p> + <ul> + <li>Access and correct your account information</li> + <li>Export your code and models, since they are stored as standard Git repositories</li> + <li>Delete your account and its content from the account settings</li> + <li>Ask us anything about your data at the address below</li> + </ul> + <p> + If you are in the EU, you also have rights under the GDPR, including data + portability, the right to object to processing, and the right to lodge a + complaint with a supervisory authority. + </p> + + <h2>Cookies</h2> + <p> + The website uses cookies to keep you signed in and to remember basic + preferences. We do not use them to track you across other sites. + </p> + + <h2>Children</h2> + <p> + siGit Code &amp; Deploy is not directed at children. You must be at least 13 + years old, or 16 in the EU, to create an account. We do not knowingly collect + data from children below that age. + </p> + + <h2>International transfers</h2> + <p> + Your data may be processed in countries other than where you live. When that + happens we rely on appropriate safeguards in line with applicable data + protection law. + </p> + + <h2>Changes to this policy</h2> + <p> + We may update this policy as the platform changes. When we make a significant + change we will update this page and, where it matters, let you know by email + or in the app. + </p> + + <h2>Contact</h2> + <p> + Questions or requests about your data go to + <a href="mailto:splitfire@setoelkahfi.se">splitfire@setoelkahfi.se</a>. + </p> + <p> + Splitfire AB, Sweden. See also our <%= link_to "Terms of Use", terms_path %>. + </p> + </div> +</div>
app/views/pages/terms.html.erb
+125
new file mode 100644 index 0000000..d52c414 --- /dev/null +++ b/app/views/pages/terms.html.erb @@ -0,0 +1,125 @@ +<% content_for :title, "Terms of Use" %> + +<div class="max-w-3xl mx-auto px-4 sm:px-6 py-16 sm:py-20"> + <div class="text-center mb-12"> + <img src="/icon.png" alt="siGit Code &amp; Deploy" class="mx-auto h-20 w-auto rounded-2xl border border-surface-600 shadow-lg"> + </div> + + <div class="prose-readme"> + <h1>Terms of Use</h1> + <p class="text-gray-500"><em>Last updated: June 17, 2026</em></p> + + <h2>1. Acceptance</h2> + <p> + By using sigit.si, the siGit Code &amp; Deploy apps, or our Git and API + endpoints (together, the "Service"), you agree to these Terms. If you do not + agree, please do not use the Service. The Service is operated by Splitfire AB + in Sweden. + </p> + + <h2>2. What the Service is</h2> + <p> + siGit Code &amp; Deploy is a Git hosting platform for source code and + open-weights models. It lets you host public and private repositories, browse + files, commits, and diffs, publish models with model cards and Git LFS files, + clone and push over HTTPS, use the desktop and mobile apps, and connect AI + coding agents over the Agent Client Protocol. + </p> + + <h2>3. Accounts</h2> + <ul> + <li>You need an account to use most features, handled through smbCloud Auth.</li> + <li>Provide accurate information and keep your credentials confidential.</li> + <li>You are responsible for everything that happens under your account.</li> + <li>You must be at least 13 years old, or 16 in the EU.</li> + <li>Tell us promptly if you suspect unauthorized use of your account.</li> + </ul> + + <h2>4. Acceptable use</h2> + <p>You agree not to:</p> + <ul> + <li>Use the Service for anything illegal or to host unlawful content</li> + <li>Upload malware, or use repositories to distribute it</li> + <li>Infringe other people's intellectual property or privacy</li> + <li>Try to break, overload, or gain unauthorized access to our systems</li> + <li>Abuse storage, bandwidth, or Git LFS in ways that disrupt the Service for others</li> + <li>Scrape or automate against the Service outside the supported Git and API endpoints</li> + <li>Harass or harm other users</li> + </ul> + + <h2>5. Your content</h2> + <p> + You keep ownership of the code, models, and other content you publish. To + host and run the Service, you grant us a worldwide, non-exclusive, + royalty-free license to store, copy, and display your content as needed to + operate the platform and provide it to the people you share it with. + </p> + <p> + You are responsible for your content. You confirm you have the rights to + publish it, and that public content does not break any license or agreement + you are bound by. + </p> + + <h2>6. Open-weights models and licensing</h2> + <p> + When you publish model weights or datasets, you must have the right to share + them and you must respect the license of any upstream model or data you build + on. Attach a clear license to what you publish. We are not a party to the + licenses between you and the people who use your models, and we do not vet or + guarantee their terms. + </p> + + <h2>7. Our content</h2> + <p> + The siGit Code &amp; Deploy software, design, name, and logos belong to + Splitfire AB or our licensors. These Terms do not grant you rights to them + beyond using the Service as intended. + </p> + + <h2>8. Service availability</h2> + <p> + The Service is provided "as is" and "as available", without warranties of any + kind. We may change, suspend, or discontinue parts of the Service, and we aim + to give reasonable notice for significant changes. + </p> + + <h2>9. Limitation of liability</h2> + <p> + To the maximum extent permitted by law, Splitfire AB is not liable for + indirect, incidental, or consequential damages, or for loss of data, profits, + or use, arising from your use of or inability to use the Service. Keep your + own backups of anything important. Your repositories are standard Git, so you + can always clone a full copy. + </p> + + <h2>10. Termination</h2> + <p> + You may delete your account at any time from your settings. We may suspend or + terminate accounts that violate these Terms or put the Service or its users at + risk. On termination your license to use the Service ends and we may delete + your account data, subject to legal requirements. + </p> + + <h2>11. Governing law</h2> + <p> + These Terms are governed by the laws of Sweden. Disputes will be resolved in + the Swedish courts, after a good-faith attempt to settle the matter directly. + </p> + + <h2>12. Changes to these Terms</h2> + <p> + We may update these Terms as the Service evolves. When we make a significant + change we will update this page and, where it matters, let you know. Continued + use after a change means you accept the updated Terms. + </p> + + <h2>13. Contact</h2> + <p> + Questions about these Terms go to + <a href="mailto:splitfire@setoelkahfi.se">splitfire@setoelkahfi.se</a>. + </p> + <p> + Splitfire AB, Sweden. See also our <%= link_to "Privacy Policy", privacy_path %>. + </p> + </div> +</div>
config/routes.rb
+7
index 17e8862..41f130c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,13 @@ Rails.application.routes.draw do root "pages#home" + # Static pages — declared before the "/:username" matcher so these literal + # slugs aren't read as profiles. + get "/about", to: "pages#about", as: :about + get "/contact", to: "pages#contact", as: :contact + get "/privacy", to: "pages#privacy", as: :privacy + get "/terms", to: "pages#terms", as: :terms + # Dev panel — only mounted in development if Rails.env.development? namespace :dev do