https://github.com/lambdaisland/gaiwan_co
Website for Gaiwan GmbH
https://github.com/lambdaisland/gaiwan_co
Last synced: 6 months ago
JSON representation
Website for Gaiwan GmbH
- Host: GitHub
- URL: https://github.com/lambdaisland/gaiwan_co
- Owner: lambdaisland
- Created: 2019-06-18T07:44:05.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-02-22T08:17:31.000Z (almost 2 years ago)
- Last Synced: 2025-06-12T02:39:26.116Z (7 months ago)
- Language: Clojure
- Homepage: https://gaiwan.co
- Size: 5.84 MB
- Stars: 10
- Watchers: 3
- Forks: 3
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Gaiwan GmbH
This repository consists the code for our website https://gaiwan.co
We are a provider of technological expertise grown out of the consulting and development work of Arne Brasseur.
## Tech stack
We love Clojure, and this site is built with it!
We're using simple, standard, clojure tools and libraries to build this. Nothing fancy :)
## Architechture
All the source files are located in `src/gaiwan` directory and static resources
in the `resources` directory.
The site works as a dynamic server rendered site on localhost, then we use [reitit-jaatya](https://github.com/lambdaisland/reitit-jaatya) to create a frozen static build of this site.
The frozen site gets generated inside a `_site` directory. This directory is added to
gitingore because we don't want to mix the build and source history. Therefore
we commit the `_site` directory to a `gh-pages` branch using a nifty feature of
git called as worktrees.
Building and deploying happens automatically by pushing to `main`, thanks to GH Actions.
## Local development
Ensure you have Clojure CLI tools installed.
Use `cider-jack-in-clj` to launch a clojure repl (or `clj`)
and then run
```clojure
user => (go)
2022-05-02 18:03:35.951 INFO lambdaisland.webstuff.bootstrap - {:integrant/starting {:profile :default, :key nil}, :line 58}
2022-05-02 18:03:35.961 INFO lambdaisland.webstuff.http - {:server/starting {:port 9000, :rebuild-on-request? true}, :line 265}
:initiated
user => (browse)
true
```
This will start the server at http://localhost:9000
Everything is dynamic and REPL'able. When you're satisfied you can build the site by running
```clojure
user => (require '[co.gaiwan.site :as site])
user => (site/build)
```
or from the command line like so:
```bash
make build
```
This will run `npm run release` and generate a `_site` folder
The `resources` directory is copied to the final site as is.
### Frontend setup
Make sure you have latest npm deps installed using `npm install` and then open
up another terminal window and run:
```bash
# cd to project directory
npm run dev
```
This will start postcss watches and run a local server serving the `_site` directory on http://localhost:8001
## Deployment
The site is automatically deployed via a Github Actions workflow. Simply push
your changes to `main`, and the result will end up on the `gh-pages` branch,
which is what Github displays.
## Enhancements
Currently the setup is extremely simple and minimal. Everytime you make a change you need to rerun the build command. This is tiresome and we need to find a way to autobuild on file changes.
A problem is that the css/js assets are not being hashed. This can lead to caching issues. We can use `sha1sum` utility present on linux systems to build on this.
## License
TODO