SciSiteForge/README.md

93 lines
4.0 KiB
Markdown

# SciSiteForge
A lightweight, responsive, static-site framework for open educational resources in science.
## 🎯 Purpose
This repository provides a reusable foundation for sites like **evo-edu.org**, featuring:
- Mobile-first responsive design
- Modular content loading (HTML fragments)
- Language-switching support (for multilingual sites)
- Integrated app-card and notebook-section templates
- Intended to host Javascript web apps
-- With study guides, alignment documents, reading (links to notebook sections)
- Bibliography rendering (journal style + BibTeX)
## 🛠️ Features
- Vanilla HTML/CSS/JS (no heavy frameworks)
- Lazy-loaded sections for performance
- Accessible navigation and UI
- Offline-compatible (no external dependencies)
- Bibliography content per section/subsection
- Based on Bibtex
- Renders to a journal style ('Evolution' is the sole style so far)
- Loads bibliography from host on demand
## 📂 Structure
```
/framework
├── theme/ # Base layout, CSS, JS
├── templates/ # Reusable HTML snippets
├── docs/ # Usage guide and examples
├── scripts/ # Language translation script and example glossary
└── LICENSE # MIT License
```
## 🧩 How to Use
1. Clone this repo
2. Copy `/theme/base.html` into your content project
3. Customize navigation and styling
4. Use `main.js` for dynamic section loading
> See [`evo-edu/en`](https://evo-edu.org/en) for a working example.
## 📜 License
MIT — free to use, modify, and redistribute.
## AI Disclosure
This code and documentation was primarily provided by Alibaba's Qwen3 Max generative AI model with prompting by Wesley R. Elsberry.
## Comments
I've run web sites since 1995, and some of the most fraught and trying
times I've experienced are when a site gets hacked due to
vulnerabilities in dynamic content. So one goal here is to provide
content that is responsive and looks to some extent dynamic, while the
content itself is in static files that have no modification due to
operations in the website itself. I hope this reduces the attack
surface considerably, and also should make it easier to simply restore
from a good backup in case of a problem and carry on. The bibliography
is meant to be targeted to topics, but not require a database to
obtain the correct bibliography items to display. Content folding
with lazy-loading aims to prevent pages from growing in size without
bound, and provide modularity in collaboration. Models, programs, and
simulations are meant to be implemented in a browser friendly form,
either Javascript, WebGL, or similar, so that processing takes place
client-side, preventing heavy loads on servers. The current model of
content I am pursuing with this to to have a site landing page, a
collection of web apps for a topic, and a 'notebook' on that topic
that includes didectic material sufficient to ground a naive user in
the relevant concepts that the models, programs, and simulations
address.
The other major feature here is the architecture to support multiple
languages. Because my efforts are currently down to one developer, me,
this is accomplished by use of one or more locally-hosted multilingual
large language models that can automaticlly provide decent translation
from a source language to a target language. In my case, the source
language will be English, I have a Python program for a batch offline
process to traverse the site directory tree, open and parse HTML
files, ask for translations at the paragraph level, and assemble those
back into the same HTML structure in order to obtain each translated
page. Each page will incorporate the language switcher Javascript code
in its header, which amounts to redirecting the user to a copy of the
site whose static files are in the target language. The translation
is to be done via an LLM running locally via Mozilla Llamafile.
This came together in a hurry, but I hope that other people may find
some utility in it to aid in disseminating domain knowledge they and
their collaborators may have.
Wesley R. Elsberry, 2025-10-14