This is the website for etceter4.com - a composer of sounds/words/images. Explore the depths of our web labyrinth.
- Node.js 18+ and npm 9+
- Git for version control
-
Clone the repository
git clone https://github.com/4-b100m/etceter4.git cd etceter4 -
Install dependencies
npm install
-
Start development server
npm run dev
This will start a local server at
http://localhost:3000with hot reloading enabled.
npm run dev- Start development server with live reloadnpm run lint- Check code quality with ESLintnpm run lint:fix- Auto-fix linting issuesnpm run format- Format code with Prettiernpm run format:check- Check if code is properly formattednpm run validate:package-lock- Validate package-lock.json consistency
- Frontend: Vanilla JavaScript (ES6+), HTML5, CSS3
- CSS Framework: Tachyons for utility-first CSS
- JavaScript Libraries: jQuery 3.7+, Velocity.js 2.0+
- Development: ESLint, Prettier, Browser-sync
- CI/CD: GitHub Actions
- Deployment: GitHub Pages
etceter4/
βββ css/ # Stylesheets
β βββ styles.css # Main styles
β βββ vendor/ # Third-party CSS
βββ js/ # JavaScript files
β βββ main.js # Main application logic
β βββ page.js # Page management
β βββ ... # Other modules
βββ img/ # Images and assets
βββ ogod/ # OGOD section files
βββ index.html # Main entry point
- Use modern JavaScript (ES6+) features
- Prefer
constandletovervar - Follow the configured ESLint and Prettier rules
- Use meaningful variable and function names
- Utility-first approach with Tachyons
- Component-specific styles in
styles.css - Responsive design for modern devices
- No IE8 support (modern browsers only)
- Create feature branches from
master - Use descriptive commit messages
- All PRs require passing CI checks
- Automatic dependency updates via Dependabot
The site automatically deploys to GitHub Pages when changes are pushed to the master branch. The CI/CD pipeline:
- Linting & Formatting - Ensures code quality
- Package Lock Validation - Verifies dependency integrity
- Security Audit - Checks for vulnerabilities
- Deploy - Publishes to GitHub Pages
- Zero known vulnerabilities in dependencies
- Comprehensive Content Security Policy (CSP)
- Security headers (X-Frame-Options, CSP, HSTS-ready)
- Regular security audits via
npm audit - Dependabot for automatic dependency updates
- SRI (Subresource Integrity) hashes for all CDN resources
See SECURITY.md for full security documentation.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes following the code style guidelines
- Run tests:
npm run lint && npm run format:check && npm run validate:package-lock - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See SECURITY.md for security guidelines and EDGE_CASES.md for known limitations.
This project is licensed under the ISC License.
Contact us if you see any strange things happening on the site!
Modernized and updated for current web standards β¨
-
Download and install the Node Version Manager (NVM) (you will need XCode for this if on Mac), and git
-
Through NVM, download the latest long term support version of node
nvm install --lts
-
Set the default state of your terminal to that version of node (so you don't have to reset it every time!)
# check the latest lts nvm current # use that version to make the default one nvm alias default 6.9.2
-
Move to the directory of the etceter4 folder using cd and ls
# cd means 'change directory', move to directories using the syntax below cd ~/Dropbox/etceter4 # ls lists files in a directory, when you just type in ls, it lists the files in the current directory you're in ls
-
When you get to the folder, run npm install. This will install all the programs used in the project into the node_modules folder. These programs are used as aids in development and run tasks to build the page for production (more on this later).
- Always use classes to describe the visual style of your html. Do not style using inline CSS, and IDs.
- IDs are reserved to provide a hook to JS, and inline style is used for JS functions.
- Only use style.css to create more small components for use within the HTML doc, and to describe the visual behavior of pseudo classes.
- Compartmentalize your JS. These will be concatenated and minified using a task runner.
-
Remove a folder from git:
# Removes it only from the git folder git rm -r --cached FolderName # Stages it git commit -m "Removed folder from repository" # Pushes changes live git push origin master