The webpage of SECQUOIA (Systems Engineering via Classical and Quantum Optimization for Industrial Applications) research group at Purdue University.
Follow these instructions to set up and run the website locally using Docker.
- Docker
- Git
-
Clone the repository
git clone https://github.com/SECQUOIA/SECQUOIA.github.io.git cd SECQUOIA.github.io -
Create a Dockerfile
Create a file named
Dockerfilewith the following content:FROM ruby:3.2 WORKDIR /app COPY . . RUN gem install bundler && bundle install EXPOSE 4000 CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
-
Create a Gemfile
Create a file named
Gemfilewith the following content:source "https://rubygems.org" gem "jekyll", "~> 4.0.0" gem "mercenary", "~> 0.3.6" gem "webrick" gem "forty_jekyll_theme", path: "."
-
Build the Docker image
docker build -t secquoia-website . -
Run the website locally
docker run -p 4000:4000 -v "$(pwd)":/app secquoia-website -
View the website
Open your web browser and go to http://localhost:4000
When making changes to the website:
- Keep the Docker container running
- Edit files in your favorite editor
- Changes will be automatically detected and the site will rebuild
- Refresh your browser to see changes
To enable live reloading, stop any running containers and run:
docker run -p 4000:4000 -v "$(pwd)":/app jekyll-site bundle exec jekyll serve --livereload --host 0.0.0.0To build the site for production:
docker run -v "$(pwd)":/app jekyll-site bundle exec jekyll buildThe built site will be in the _site directory, which can be deployed to any static hosting service.
-
If you encounter permission issues with Docker, ensure your user is added to the Docker group:
sudo usermod -aG docker $USER newgrp docker -
If there are bundle dependency issues, try rebuilding the Docker image:
docker build --no-cache -t secquoia-website .
The Dockerfile, Gemfile, and other development configuration files are gitignored to keep the repository clean. You'll need to recreate them when setting up a new development environment.
We store original images (PNG/JPG/etc.) in the repository for provenance, but only WebP images should be referenced in the built site.
Enforcement model:
- CI scans generated
_siteHTML for<img>tags referencing non-WebP files underassets/images/. - If any referenced image ends with
.png,.jpg,.jpeg, or.gif, the build fails. - You may still commit original source images alongside their converted
.webpcounterpart.
Conversion examples:
# Using cwebp (preferred)
cwebp input.jpg -q 80 -o input.webp
# Using ImageMagick
magick input.png -quality 80 input.webpUpdate references (Markdown or HTML) to point to the .webp file after conversion.
Local pre-check after building:
bundle exec jekyll build
bash scripts/check_referenced_images.shTips:
- Target WebP quality (~70–85) balancing size vs clarity.
- Keep typical member photos < 300KB; large hero/banner images ideally < 1MB.
- Original files can remain for future recompression or alternative formats if needed.