Compare commits

...

7 commits
1.0.0 ... main

Author SHA1 Message Date
Ananth Venkatesh
86adaa86a2
fix: resolve all hosting and url addresses 2025-03-01 02:38:24 -05:00
Ananth Venkatesh
f1e0aa5ec0
chore(git): ignore root index.html for deployment 2025-02-28 02:10:18 -05:00
Ananth Venkatesh
4f06d54e42
build(lock): update 2025-02-28 01:59:51 -05:00
Ananth Venkatesh
508c457ffb
feat: add entry descriptions 2025-02-28 01:56:03 -05:00
Youwen Wu
713d6d4486
feat: install entire site using nix 2025-02-16 15:51:42 -05:00
Ananth Venkatesh
21b946568d
build(lock): update 2025-02-16 02:14:56 -05:00
Ananth Venkatesh
1713c9e01e
docs(readme): add build instructions 2025-02-16 02:14:38 -05:00
7 changed files with 76 additions and 47 deletions

2
.gitignore vendored
View file

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

View file

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

View file

@ -2,4 +2,19 @@
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)

View file

@ -88,11 +88,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1739064336,
"narHash": "sha256-LTZznyurm9WWchG3uPH+8Sf5hkzZyHoa9FvDW0cLk0M=",
"lastModified": 1740274080,
"narHash": "sha256-tDNZc/PVt9z2m7i5PKuYJ9Ii60A2oNrtl6qTeqqmoJc=",
"owner": "jeslie0",
"repo": "mkElmDerivation",
"rev": "2d5f1acc6da7e6d5deeff5c9f47729a671ab8f9a",
"rev": "93c08ae888748f71873539bebcae981cf72f3f44",
"type": "github"
},
"original": {
@ -119,11 +119,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1739446958,
"narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=",
"lastModified": 1740695751,
"narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2ff53fe64443980e139eaa286017f53f88336dd0",
"rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4",
"type": "github"
},
"original": {

View file

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

View file

@ -82,6 +82,7 @@ type alias Model =
, h : Int
, last : String
, url : Url.Url
, path : String
, key : Nav.Key
, mesh : Maybe Object3d
, textures : Maybe (Material.Textured Obj.Decode.ObjCoordinates)
@ -95,19 +96,20 @@ type alias Model =
type alias Flags =
( Int, Int )
( Int, Int, String )
init : Flags -> Url.Url -> Nav.Key -> ( Model, Cmd Msg )
init flags url key =
let
( width, height ) =
( width, height, path ) =
flags
in
( { w = width
, h = height
, last = ""
, url = url
, path = path
, key = key
, mesh = Nothing
, textures = Nothing
@ -395,7 +397,7 @@ bodyText =
[ Font.color white
, Font.family [ Font.typeface "Inter" ]
, Font.size 20
, width (px 600)
, width (px 500)
]
@ -459,12 +461,12 @@ id =
Html.Attributes.id >> Element.htmlAttribute
getPaths : String -> List String
getPaths base =
getPaths : String -> String -> List String
getPaths path base =
let
root : String
root =
"/" ++ base
path ++ base
in
List.map ((++) root) [ "", "/", "/index.html" ]
@ -484,13 +486,18 @@ itemize multikeys entry =
[]
sitemap : Dict String (Model -> List (Html Msg))
sitemap =
sitemap : Model -> Dict String (Model -> List (Html Msg))
sitemap model =
let
getter : String -> List String
getter =
getPaths model.path
in
Dict.fromList
(itemize ([ "/", "/index.html" ] ++ getPaths "src" ++ getPaths "index" ++ getPaths "home") pageHome
++ itemize (getPaths "entries") pageEntries
++ itemize (getPaths "about") pageAbout
++ itemize (getPaths "colophon") colophon
(itemize ([ "/", "/index.html", model.path ] ++ getter "src" ++ getter "index" ++ getter "home") pageHome
++ itemize (getter "entries") pageEntries
++ itemize (getter "about") pageAbout
++ itemize (getter "colophon") colophon
)
@ -499,7 +506,7 @@ loadUrl model =
let
req : Maybe (Model -> List (Html Msg))
req =
Dict.get model.url.path sitemap
Dict.get model.url.path (sitemap model)
in
case req of
Just builder ->
@ -533,9 +540,9 @@ menu model =
, Font.size 18
]
(row [ spacing 20 ]
[ inlineLinkInt "Entries" "/entries"
, inlineLinkInt "Access" "/about"
, inlineLinkInt "Colophon" "/colophon"
[ inlineLinkInt "Entries" (model.path ++ "entries")
, inlineLinkInt "Access" (model.path ++ "about")
, inlineLinkInt "Colophon" (model.path ++ "colophon")
]
)
@ -782,7 +789,7 @@ pageAbout model =
, column [ spacing 15 ]
[ row
[ spacing 15 ]
[ linkBtnInt " Back" "/"
[ linkBtnInt " Back" model.path
, btn "Directions" (Scroll "one")
]
, row [ spacing 15 ]
@ -809,7 +816,7 @@ pageAbout model =
, column
(page model ++ [ id "one" ])
[ image (fullImage model)
{ src = "../assets/img/map.png"
{ src = model.path ++ "../assets/img/map.png"
, description = "mit campus map with pin at macgregor house"
}
, column (pageText model)
@ -940,7 +947,7 @@ pageEntries model =
[ entryLink "A entry" "A"
, text ", "
, entryLink "Bentry" "B"
, text " (Office of the President), "
, text ", "
, entryLink "Centry" "C"
, text " (the C is silent), "
, entryLink "Dentry" "D"
@ -960,7 +967,7 @@ pageEntries model =
[ row
[ spacing 15
]
[ linkBtnInt " Back" "/"
[ linkBtnInt " Back" model.path
, btn "Explore " (ScrollToEntry "J")
]
]
@ -998,7 +1005,7 @@ pageEntries model =
, image [ width (px 80), padding 12 ] { description = "flag of j entry", src = "../assets/img/jentry.png" }
]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(J Entry) The heart of MacGregor. Historic culture, big lore. Jentry memes. Greatest MacGregor Housecomm representation of any entry. Jamily is forever."
[ 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."
]
]
, el
@ -1031,7 +1038,7 @@ pageEntries model =
subheading
[ text "Welcome to A Entry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "Top floor. Top dog. Lots of dogs, in fact. Historic MacGregor cultural epicenter."
[ text "Top floor. Top dog. Alpha wolf. Unity and strength. Positive, above average."
]
]
, el
@ -1064,7 +1071,7 @@ pageEntries model =
subheading
[ text "Welcome to Bentry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(B Entry) Office of the President. Sweeping views. Crossroads of the High Rise. B is for burgers?"
[ 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."
]
]
, el
@ -1097,7 +1104,7 @@ pageEntries model =
subheading
[ text "Welcome to Centry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(C Entry) Ceriously quiet. High enough to see the clouds, but low enough to stay grounded. MacGregor's creative capital core."
[ text "(C Entry) Chill. Calmer. Sloths."
]
]
, el
@ -1120,7 +1127,7 @@ pageEntries model =
)
]
, column
(page model ++ [ id "D", Background.color (rgb255 240 140 40) ])
(page model ++ [ id "D", Background.color (rgb255 40 140 240) ])
[ column (pageText model)
[ row [ spacing 10 ]
[ btn "" (ScrollToEntry "C")
@ -1130,7 +1137,7 @@ pageEntries model =
subheading
[ text "Welcome to Dentry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(D Entry) Office of the Vice President. Active after dark. Diligently working until dusk. The culture is palpable."
[ 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."
]
]
, el
@ -1153,7 +1160,7 @@ pageEntries model =
)
]
, column
(page model ++ [ id "E", Background.color (rgb255 40 20 30) ])
(page model ++ [ id "E", Background.color (rgb255 221 162 126) ])
[ column (pageText model)
[ row [ spacing 10 ]
[ btn "" (ScrollToEntry "D")
@ -1163,7 +1170,7 @@ pageEntries model =
subheading
[ text "Welcome to E entry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "Board games over Briggs field. Excellence in everything. End of story."
[ 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!"
]
]
, el
@ -1186,7 +1193,7 @@ pageEntries model =
)
]
, column
(page model ++ [ id "F", Background.color (rgb255 200 50 75) ])
(page model ++ [ id "F", Background.color (rgb255 200 125 150) ])
[ column (pageText model)
[ row [ spacing 10 ]
[ btn "" (ScrollToEntry "E")
@ -1196,7 +1203,7 @@ pageEntries model =
subheading
[ text "Welcome to the Fentry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(F entry) F is for Food. F is for Feast. F is for First (low rise block). F is Forever."
[ text "(F entry) Typical nights for us look like playing poker, watching a movie, or just chilling and doing homework."
]
]
, el
@ -1219,7 +1226,7 @@ pageEntries model =
)
]
, column
(page model ++ [ id "G", Background.color (rgb255 200 50 150) ])
(page model ++ [ id "G", Background.color (rgb255 250 150 50) ])
[ column (pageText model)
[ row [ spacing 10 ]
[ btn "" (ScrollToEntry "F")
@ -1229,7 +1236,7 @@ pageEntries model =
subheading
[ text "Welcome to the Gentry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(G entry) G is for Greatness. Spans the Charles. Overlooks Fenway. Good things start in Gentry."
[ text "(G entry) Chill but welcoming. The G in Gentry stands for Goofy, Gamers, and Good Times."
]
]
, el
@ -1252,7 +1259,7 @@ pageEntries model =
)
]
, column
(page model ++ [ id "H", Background.color (rgb255 200 150 50) ])
(page model ++ [ id "H", Background.color (rgb255 50 175 50) ])
[ column (pageText model)
[ row [ spacing 10 ]
[ btn "" (ScrollToEntry "G")
@ -1262,7 +1269,7 @@ pageEntries model =
subheading
[ text "Welcome to the Hentry." ]
, paragraph (bodyText ++ [ Font.size 32 ])
[ text "(H entry) Lots of chickens. Crossroads of the Low Rise. Largest entry in MacGregor."
[ 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."
]
]
, el
@ -1341,7 +1348,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 "
, 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 "
, inlineLinkInt "main page" "/src"
, inlineLinkInt "main page" (model.path ++ "/src")
, text ". If you believe this page really is missing, "
, inlineLink "contact the webmaster" "mailto:ananthv@mit.edu"
, text "."
@ -1415,7 +1422,7 @@ colophon model =
]
[ text "Colophon."
, row [ spacing 15 ]
[ linkBtnInt " Back" "/"
[ linkBtnInt " Back" model.path
, linkBtn "Source" "https://forgejo.mit.edu/ananthv/macgregor"
, btn "Literature" (Scroll "one")
]

View file

@ -16,7 +16,11 @@
<script>
var app = Elm.Main.init({
node: document.getElementById("app"),
flags: [window.innerWidth, window.innerHeight],
flags: [
window.innerWidth,
window.innerHeight,
window.location.pathname,
],
});
app.ports.copyToClipboard.subscribe((tuple) => {