Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .cursor/rules/code-style.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
description: Code and comment conventions for marc.tt
alwaysApply: true
---

# Code Style

Keep code and comments as concise as they can be.

## Comments

- Comment intent, trade-offs, or non-obvious constraints — never narrate what the code already says.

```scss
// BAD — narrates the obvious
.card { padding: 1rem; } // add padding to the card

// GOOD — explains a non-obvious choice
// Clip layer: lets grid-template-rows: 0fr collapse the padded panel fully.
.menu-dropdown-clip { min-height: 0; overflow: hidden; }
```

- Prefer a one-line `/* Section */` header over multi-line ASCII banners.

## General

- Prefer editing existing files over adding new ones; reuse design tokens (`--fg`, `--bg`, `--font-*`) instead of hardcoding values.
- SCSS lives in `_sass/` and is wired through `css/main.scss`. Homepage styles go in `_home.scss` under the `.home` scope.
- Markup inside a block-level HTML element in a `.md` file is not processed as Markdown — write plain HTML there.
- No dependencies for things CSS can do.
22 changes: 22 additions & 0 deletions .cursor/rules/design-philosophy.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
description: Design philosophy for marc.tt — reference for all UI/UX decisions
alwaysApply: true
---

# Design Philosophy

Inspired by Apple. Three principles:

1. **Purposeful** — every animation communicates something (entrance, hierarchy, interactivity). If it doesn't serve a purpose, remove it.
2. **Fluid** — use natural ease curves (`cubic-bezier(0.25, 0.1, 0.25, 1)`), never linear or mechanical. Motion should feel like it has weight.
3. **Restrained** — if you notice the animation, it's too much. Subtlety over spectacle. Prefer 6-8px translate and 400-600ms durations.

## Implementation rules

- CSS-first: SCSS with `@keyframes` and the `.animate-in` utility (stagger via the `--delay` custom property). No animation libraries.
- Always respect `prefers-reduced-motion` with a media query.
- Hover micro-interactions: subtle lifts (`translateY(-2px)`), scale (`scale(1.1)`), color transitions. Keep durations 200-300ms.
- No scroll-triggered animations — the column is narrow; entrance-on-mount is enough.
- Typography: Inter for body, JetBrains Mono for mono. Generous tracking on headings, tight on labels.
- Color: monochrome. Layer opacity over solid colors for depth using the RGB tokens, e.g. `rgb(var(--fg) / 0.05)` and `rgb(var(--bg) / 0.6)`. Root font-size stays 16px.
- Layout: single 640px column, generous whitespace, content-first.
37 changes: 37 additions & 0 deletions .githooks/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/sh
# Enforces Conventional Commits on the subject line.
# Install: npm install (sets core.hooksPath via prepare)
# or: git config core.hooksPath .githooks

commit_msg_file="$1"
subject=$(head -n1 "$commit_msg_file")

# Git-generated messages during merge/rebase/cherry-pick.
case "$subject" in
Merge\ *) exit 0 ;;
Revert\ *) exit 0 ;;
fixup!* | squash!*) exit 0 ;;
esac

pattern='^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\([a-z0-9._/-]+\))?(!)?: .+'

if printf '%s\n' "$subject" | grep -Eq "$pattern"; then
exit 0
fi

cat >&2 <<'EOF'
Commit message rejected: subject must follow Conventional Commits.

type(scope): description
type!: description (breaking change)

Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert

Examples:
feat(projects): add prev/next navigation
fix: correct film embed aspect ratio
chore: remove unused project logos

EOF

exit 1
57 changes: 57 additions & 0 deletions .github/workflows/jekyll.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build and Deploy Jekyll Site

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
bundler-cache: true

- name: Setup Pages
id: pages
uses: actions/configure-pages@v4

- name: Fetch latest YouTube film
run: ruby scripts/fetch-latest-film.rb

- name: Build with Jekyll
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: production

- name: Upload artifact
uses: actions/upload-pages-artifact@v3

deploy:
if: github.ref == 'refs/heads/main'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
_site/
.jekyll-cache/
.DS_Store
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.6
18 changes: 18 additions & 0 deletions 404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
layout: default
---

<h1 align="center">404. Computer says no.</h1>
<img src="assets/index/404.webp" alt="Page not found">
<p align="center">
<br>
The page you're looking for doesn't exist.
Maybe it did in the past, but it doesn't now.
Maybe it's a typo.
Maybe it's a mistake.
But we all make mistakes... Don't we?
We're all a bit lost sometimes.
<br>
<br>
It ain't too late to go back to the <a href="/">home page</a>.
</p>
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
marc.tt
9 changes: 9 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
source "https://rubygems.org"

gem "jekyll", "~> 4.4.1"

group :jekyll_plugins do
gem "webrick" # Required for Ruby 3.0+
gem "jekyll-sitemap"
gem "jekyll-feed"
end
168 changes: 168 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
base64 (0.2.0)
bigdecimal (3.1.9)
colorator (1.1.0)
concurrent-ruby (1.3.5)
csv (3.3.2)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.17.1)
ffi (1.17.1-aarch64-linux-gnu)
ffi (1.17.1-aarch64-linux-musl)
ffi (1.17.1-arm-linux-gnu)
ffi (1.17.1-arm-linux-musl)
ffi (1.17.1-arm64-darwin)
ffi (1.17.1-x86-linux-gnu)
ffi (1.17.1-x86-linux-musl)
ffi (1.17.1-x86_64-darwin)
ffi (1.17.1-x86_64-linux-gnu)
ffi (1.17.1-x86_64-linux-musl)
forwardable-extended (2.6.0)
google-protobuf (4.29.3)
bigdecimal
rake (>= 13)
google-protobuf (4.29.3-aarch64-linux)
bigdecimal
rake (>= 13)
google-protobuf (4.29.3-arm64-darwin)
bigdecimal
rake (>= 13)
google-protobuf (4.29.3-x86-linux)
bigdecimal
rake (>= 13)
google-protobuf (4.29.3-x86_64-darwin)
bigdecimal
rake (>= 13)
google-protobuf (4.29.3-x86_64-linux)
bigdecimal
rake (>= 13)
http_parser.rb (0.8.0)
i18n (1.14.7)
concurrent-ruby (~> 1.0)
jekyll (4.4.1)
addressable (~> 2.4)
base64 (~> 0.2)
colorator (~> 1.0)
csv (~> 3.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
json (~> 2.6)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (~> 0.3, >= 0.3.6)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
json (2.9.1)
kramdown (2.5.1)
rexml (>= 3.3.9)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (6.0.1)
rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rexml (3.4.0)
rouge (4.5.1)
safe_yaml (1.0.5)
sass-embedded (1.83.4)
google-protobuf (~> 4.29)
rake (>= 13)
sass-embedded (1.83.4-aarch64-linux-android)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-aarch64-linux-gnu)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-aarch64-linux-musl)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-aarch64-mingw-ucrt)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-arm-linux-androideabi)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-arm-linux-gnueabihf)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-arm-linux-musleabihf)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-arm64-darwin)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-riscv64-linux-android)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-riscv64-linux-gnu)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-riscv64-linux-musl)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-x86_64-cygwin)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-x86_64-darwin)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-x86_64-linux-android)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-x86_64-linux-gnu)
google-protobuf (~> 4.29)
sass-embedded (1.83.4-x86_64-linux-musl)
google-protobuf (~> 4.29)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.6.0)
webrick (1.9.1)

PLATFORMS
aarch64-linux
aarch64-linux-android
aarch64-linux-gnu
aarch64-linux-musl
aarch64-mingw-ucrt
arm-linux-androideabi
arm-linux-gnu
arm-linux-gnueabihf
arm-linux-musl
arm-linux-musleabihf
arm64-darwin
riscv64-linux-android
riscv64-linux-gnu
riscv64-linux-musl
ruby
x86-linux
x86-linux-gnu
x86-linux-musl
x86_64-cygwin
x86_64-darwin
x86_64-linux
x86_64-linux-android
x86_64-linux-gnu
x86_64-linux-musl

DEPENDENCIES
jekyll (~> 4.4.1)
jekyll-feed
jekyll-sitemap
webrick

BUNDLED WITH
2.6.3
26 changes: 26 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
MIT License

Copyright (c) 2022 Dr. Sefer Bora Lisesivdin

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

---
Biscuit is derived from Solo Theme with the MIT License (MIT)
Solo - Copyright (c) 2015 Shu Uesugi
More: https://github.com/chibicode/solo/blob/gh-pages/LICENSE
Loading
Loading