Compare commits

..

No commits in common. "main" and "1.0.0" have entirely different histories.
main ... 1.0.0

7 changed files with 53 additions and 87 deletions

2
.gitignore vendored
View file

@ -16,5 +16,3 @@ result-*
# ---> Project # ---> Project
# Ignore compiled elm files # Ignore compiled elm files
compiled compiled
# Ignore hosting-specific files
/index.html

View file

@ -1 +1 @@
/nix/store/j8cvalbr8zkxdw6s2pnf2zhymd2m42r1-pre-commit-config.json /nix/store/i4wcn83p1273vgv0nggpdbjqppq33aj7-pre-commit-config.json

View file

@ -2,19 +2,4 @@
The all-new (very experimental) MacGregor House website The all-new (very experimental) MacGregor House website
## Building
To build, run
`nix build .`
For live preview, run
`bash watch.sh` and
`nix run nixpkgs#live-server`
then navigate to the `src` directory.
## Models
![A 3D model of MacGregor House](./assets/img/macg.png) ![A 3D model of MacGregor House](./assets/img/macg.png)

18
flake.lock generated
View file

@ -88,11 +88,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1746928027, "lastModified": 1739064336,
"narHash": "sha256-kqJdF25vHpQTnagr6ixYr86ZJ953406byaJf48muhS8=", "narHash": "sha256-LTZznyurm9WWchG3uPH+8Sf5hkzZyHoa9FvDW0cLk0M=",
"owner": "jeslie0", "owner": "jeslie0",
"repo": "mkElmDerivation", "repo": "mkElmDerivation",
"rev": "74f7e6eb1cd18995071980f5dccf867e2b620db4", "rev": "2d5f1acc6da7e6d5deeff5c9f47729a671ab8f9a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -119,11 +119,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1746663147, "lastModified": 1739446958,
"narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "rev": "2ff53fe64443980e139eaa286017f53f88336dd0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -194,11 +194,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1746537231, "lastModified": 1737465171,
"narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -48,10 +48,8 @@
elm make src/Main.elm --output Main.js --optimize elm make src/Main.elm --output Main.js --optimize
''; '';
installPhase = '' installPhase = ''
mkdir -p $out/dist/elm mkdir $out
cp Main.js $out/dist/elm cp Main.js $out
sed 's/..compiled\/Main.js/\/elm\/Main.js/' src/index.html > $out/dist/index.html
cp -r assets $out/dist/assets
''; '';
}; };
}; };
@ -72,6 +70,7 @@
nil.enable = true; nil.enable = true;
statix.enable = true; statix.enable = true;
markdownlint.enable = true; markdownlint.enable = true;
mdsh.enable = true;
typos.enable = true; typos.enable = true;
check-merge-conflicts.enable = true; check-merge-conflicts.enable = true;
commitizen.enable = true; commitizen.enable = true;

View file

@ -82,7 +82,6 @@ type alias Model =
, h : Int , h : Int
, last : String , last : String
, url : Url.Url , url : Url.Url
, path : String
, key : Nav.Key , key : Nav.Key
, mesh : Maybe Object3d , mesh : Maybe Object3d
, textures : Maybe (Material.Textured Obj.Decode.ObjCoordinates) , textures : Maybe (Material.Textured Obj.Decode.ObjCoordinates)
@ -96,20 +95,19 @@ type alias Model =
type alias Flags = type alias Flags =
( Int, Int, String ) ( Int, Int )
init : Flags -> Url.Url -> Nav.Key -> ( Model, Cmd Msg ) init : Flags -> Url.Url -> Nav.Key -> ( Model, Cmd Msg )
init flags url key = init flags url key =
let let
( width, height, path ) = ( width, height ) =
flags flags
in in
( { w = width ( { w = width
, h = height , h = height
, last = "" , last = ""
, url = url , url = url
, path = path
, key = key , key = key
, mesh = Nothing , mesh = Nothing
, textures = Nothing , textures = Nothing
@ -397,7 +395,7 @@ bodyText =
[ Font.color white [ Font.color white
, Font.family [ Font.typeface "Inter" ] , Font.family [ Font.typeface "Inter" ]
, Font.size 20 , Font.size 20
, width (px 500) , width (px 600)
] ]
@ -461,12 +459,12 @@ id =
Html.Attributes.id >> Element.htmlAttribute Html.Attributes.id >> Element.htmlAttribute
getPaths : String -> String -> List String getPaths : String -> List String
getPaths path base = getPaths base =
let let
root : String root : String
root = root =
path ++ base "/" ++ base
in in
List.map ((++) root) [ "", "/", "/index.html" ] List.map ((++) root) [ "", "/", "/index.html" ]
@ -486,18 +484,13 @@ itemize multikeys entry =
[] []
sitemap : Model -> Dict String (Model -> List (Html Msg)) sitemap : Dict String (Model -> List (Html Msg))
sitemap model = sitemap =
let
getter : String -> List String
getter =
getPaths model.path
in
Dict.fromList Dict.fromList
(itemize ([ "/", "/index.html", model.path ] ++ getter "src" ++ getter "index" ++ getter "home") pageHome (itemize ([ "/", "/index.html" ] ++ getPaths "src" ++ getPaths "index" ++ getPaths "home") pageHome
++ itemize (getter "entries") pageEntries ++ itemize (getPaths "entries") pageEntries
++ itemize (getter "about") pageAbout ++ itemize (getPaths "about") pageAbout
++ itemize (getter "colophon") colophon ++ itemize (getPaths "colophon") colophon
) )
@ -506,7 +499,7 @@ loadUrl model =
let let
req : Maybe (Model -> List (Html Msg)) req : Maybe (Model -> List (Html Msg))
req = req =
Dict.get model.url.path (sitemap model) Dict.get model.url.path sitemap
in in
case req of case req of
Just builder -> Just builder ->
@ -539,13 +532,10 @@ menu model =
, Font.family [ Font.typeface "Inter" ] , Font.family [ Font.typeface "Inter" ]
, Font.size 18 , Font.size 18
] ]
(column [ spacing 20 ] (row [ spacing 20 ]
[ row [] [ inlineLink "accessibility.mit.edu" "https://accessibility.mit.edu" ] [ inlineLinkInt "Entries" "/entries"
, row [ spacing 20 ] , inlineLinkInt "Access" "/about"
[ inlineLinkInt "Entries" (model.path ++ "entries") , inlineLinkInt "Colophon" "/colophon"
, inlineLinkInt "Access" (model.path ++ "about")
, inlineLinkInt "Colophon" (model.path ++ "colophon")
]
] ]
) )
@ -792,7 +782,7 @@ pageAbout model =
, column [ spacing 15 ] , column [ spacing 15 ]
[ row [ row
[ spacing 15 ] [ spacing 15 ]
[ linkBtnInt " Back" model.path [ linkBtnInt " Back" "/"
, btn "Directions" (Scroll "one") , btn "Directions" (Scroll "one")
] ]
, row [ spacing 15 ] , row [ spacing 15 ]
@ -819,7 +809,7 @@ pageAbout model =
, column , column
(page model ++ [ id "one" ]) (page model ++ [ id "one" ])
[ image (fullImage model) [ image (fullImage model)
{ src = model.path ++ "../assets/img/map.png" { src = "../assets/img/map.png"
, description = "mit campus map with pin at macgregor house" , description = "mit campus map with pin at macgregor house"
} }
, column (pageText model) , column (pageText model)
@ -888,9 +878,7 @@ pageAbout model =
, paragraph bodyText , paragraph bodyText
[ text "If you're experiencing issues viewing or interacting with parts of this website, please do not hesitate to " [ text "If you're experiencing issues viewing or interacting with parts of this website, please do not hesitate to "
, inlineLink "contact the webmaster" "mailto:ananthv@mit.edu" , inlineLink "contact the webmaster" "mailto:ananthv@mit.edu"
, text " at any time. We strive to make the story of MacGregor widely accessible to the general public, and we value your input and community support in achieving that goal. Please also see " , text " at any time. We strive to make the story of MacGregor widely accessible to the general public, and we value your input and community support in achieving that goal."
, inlineLink "accessibility.mit.edu" "https://accessibility.mit.edu/"
, text " for more options and public accessibility forms."
] ]
] ]
] ]
@ -952,7 +940,7 @@ pageEntries model =
[ entryLink "A entry" "A" [ entryLink "A entry" "A"
, text ", " , text ", "
, entryLink "Bentry" "B" , entryLink "Bentry" "B"
, text ", " , text " (Office of the President), "
, entryLink "Centry" "C" , entryLink "Centry" "C"
, text " (the C is silent), " , text " (the C is silent), "
, entryLink "Dentry" "D" , entryLink "Dentry" "D"
@ -972,7 +960,7 @@ pageEntries model =
[ row [ row
[ spacing 15 [ spacing 15
] ]
[ linkBtnInt " Back" model.path [ linkBtnInt " Back" "/"
, btn "Explore " (ScrollToEntry "J") , btn "Explore " (ScrollToEntry "J")
] ]
] ]
@ -1010,7 +998,7 @@ pageEntries model =
, image [ width (px 80), padding 12 ] { description = "flag of j entry", src = "../assets/img/jentry.png" } , image [ width (px 80), padding 12 ] { description = "flag of j entry", src = "../assets/img/jentry.png" }
] ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(J Entry) The heart of MacGregor. Historic culture, big lore. Jentry memes. J is for Jamily. We're an eclectic community, filled with everyone from introverts to extroverts, crazy vibes, chill vibes, and everything in between." [ text "(J Entry) The heart of MacGregor. Historic culture, big lore. Jentry memes. Greatest MacGregor Housecomm representation of any entry. Jamily is forever."
] ]
] ]
, el , el
@ -1043,7 +1031,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to A Entry." ] [ text "Welcome to A Entry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "Top floor. Top dog. Alpha wolf. Unity and strength. Positive, above average." [ text "Top floor. Top dog. Lots of dogs, in fact. Historic MacGregor cultural epicenter."
] ]
] ]
, el , el
@ -1076,7 +1064,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to Bentry." ] [ text "Welcome to Bentry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(B Entry) Bentry is loud and fun and very social. We like to hang out with each other and check in, catch up, and go out. We banter a lot too but we are always there for each other. Were a family for sure." [ text "(B Entry) Office of the President. Sweeping views. Crossroads of the High Rise. B is for burgers?"
] ]
] ]
, el , el
@ -1109,7 +1097,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to Centry." ] [ text "Welcome to Centry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(C Entry) Chill. Calmer. Sloths." [ text "(C Entry) Ceriously quiet. High enough to see the clouds, but low enough to stay grounded. MacGregor's creative capital core."
] ]
] ]
, el , el
@ -1132,7 +1120,7 @@ pageEntries model =
) )
] ]
, column , column
(page model ++ [ id "D", Background.color (rgb255 40 140 240) ]) (page model ++ [ id "D", Background.color (rgb255 240 140 40) ])
[ column (pageText model) [ column (pageText model)
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ btn "" (ScrollToEntry "C") [ btn "" (ScrollToEntry "C")
@ -1142,7 +1130,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to Dentry." ] [ text "Welcome to Dentry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(D Entry) D is for doing. Whether we stay in or go out (mostly go out), we have fun! D is also for degenerate. We are up the latest of all entries." [ text "(D Entry) Office of the Vice President. Active after dark. Diligently working until dusk. The culture is palpable."
] ]
] ]
, el , el
@ -1165,7 +1153,7 @@ pageEntries model =
) )
] ]
, column , column
(page model ++ [ id "E", Background.color (rgb255 221 162 126) ]) (page model ++ [ id "E", Background.color (rgb255 40 20 30) ])
[ column (pageText model) [ column (pageText model)
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ btn "" (ScrollToEntry "D") [ btn "" (ScrollToEntry "D")
@ -1175,7 +1163,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to E entry." ] [ text "Welcome to E entry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "We're a really cozy and friendly entry! We love having baking/cooking nights, watching movies, playing games, and just hanging out to chat. We also go out for dinners occasionally!" [ text "Board games over Briggs field. Excellence in everything. End of story."
] ]
] ]
, el , el
@ -1198,7 +1186,7 @@ pageEntries model =
) )
] ]
, column , column
(page model ++ [ id "F", Background.color (rgb255 200 125 150) ]) (page model ++ [ id "F", Background.color (rgb255 200 50 75) ])
[ column (pageText model) [ column (pageText model)
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ btn "" (ScrollToEntry "E") [ btn "" (ScrollToEntry "E")
@ -1208,7 +1196,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to the Fentry." ] [ text "Welcome to the Fentry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(F entry) Typical nights for us look like playing poker, watching a movie, or just chilling and doing homework." [ text "(F entry) F is for Food. F is for Feast. F is for First (low rise block). F is Forever."
] ]
] ]
, el , el
@ -1231,7 +1219,7 @@ pageEntries model =
) )
] ]
, column , column
(page model ++ [ id "G", Background.color (rgb255 250 150 50) ]) (page model ++ [ id "G", Background.color (rgb255 200 50 150) ])
[ column (pageText model) [ column (pageText model)
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ btn "" (ScrollToEntry "F") [ btn "" (ScrollToEntry "F")
@ -1241,7 +1229,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to the Gentry." ] [ text "Welcome to the Gentry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(G entry) Chill but welcoming. The G in Gentry stands for Goofy, Gamers, and Good Times." [ text "(G entry) G is for Greatness. Spans the Charles. Overlooks Fenway. Good things start in Gentry."
] ]
] ]
, el , el
@ -1264,7 +1252,7 @@ pageEntries model =
) )
] ]
, column , column
(page model ++ [ id "H", Background.color (rgb255 50 175 50) ]) (page model ++ [ id "H", Background.color (rgb255 200 150 50) ])
[ column (pageText model) [ column (pageText model)
[ row [ spacing 10 ] [ row [ spacing 10 ]
[ btn "" (ScrollToEntry "G") [ btn "" (ScrollToEntry "G")
@ -1274,7 +1262,7 @@ pageEntries model =
subheading subheading
[ text "Welcome to the Hentry." ] [ text "Welcome to the Hentry." ]
, paragraph (bodyText ++ [ Font.size 32 ]) , paragraph (bodyText ++ [ Font.size 32 ])
[ text "(H entry) Where the walls are hexagonal (not really), the vibes are chaotic-good, and the only thing more structured than our beehive of activity is our legendary group chats." [ text "(H entry) Lots of chickens. Crossroads of the Low Rise. Largest entry in MacGregor."
] ]
] ]
, el , el
@ -1353,7 +1341,7 @@ notFound model =
[ text "You were likely redirected here by a link to a page on the old website, the last known archive of which can be found " [ text "You were likely redirected here by a link to a page on the old website, the last known archive of which can be found "
, inlineLink "here" "https://web.archive.org/web/20170529064230/http://macgregor.mit.edu/" , inlineLink "here" "https://web.archive.org/web/20170529064230/http://macgregor.mit.edu/"
, text ". Unless you want to conduct research on ancient MIT traditions, you can probably find what you're looking for on the new " , text ". Unless you want to conduct research on ancient MIT traditions, you can probably find what you're looking for on the new "
, inlineLinkInt "main page" (model.path ++ "/src") , inlineLinkInt "main page" "/src"
, text ". If you believe this page really is missing, " , text ". If you believe this page really is missing, "
, inlineLink "contact the webmaster" "mailto:ananthv@mit.edu" , inlineLink "contact the webmaster" "mailto:ananthv@mit.edu"
, text "." , text "."
@ -1427,7 +1415,7 @@ colophon model =
] ]
[ text "Colophon." [ text "Colophon."
, row [ spacing 15 ] , row [ spacing 15 ]
[ linkBtnInt " Back" model.path [ linkBtnInt " Back" "/"
, linkBtn "Source" "https://forgejo.mit.edu/ananthv/macgregor" , linkBtn "Source" "https://forgejo.mit.edu/ananthv/macgregor"
, btn "Literature" (Scroll "one") , btn "Literature" (Scroll "one")
] ]

View file

@ -1,5 +1,5 @@
<!doctype html> <!doctype html>
<html lang="en"> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>MacGregor House</title> <title>MacGregor House</title>
@ -16,11 +16,7 @@
<script> <script>
var app = Elm.Main.init({ var app = Elm.Main.init({
node: document.getElementById("app"), node: document.getElementById("app"),
flags: [ flags: [window.innerWidth, window.innerHeight],
window.innerWidth,
window.innerHeight,
window.location.pathname,
],
}); });
app.ports.copyToClipboard.subscribe((tuple) => { app.ports.copyToClipboard.subscribe((tuple) => {