diff --git a/Zurich-hackathon.md b/Zurich-hackathon.md index 945c9b4..28cb8b6 100644 --- a/Zurich-hackathon.md +++ b/Zurich-hackathon.md @@ -1 +1,83 @@ -. \ No newline at end of file +# Git>AEC +## 🚧 Exploring the future of design platforms for AEC + + +* **[GitAEC](https://gitaec.com)** is an early prototype of a design **[forge](https://en.wikipedia.org/wiki/Forge_(software))** for AEC^[Architecture, Engineering, Construction] +* Like [Github](https://en.wikipedia.org/wiki/GitHub) or Gitlab, but with special features like : +* [IFC](https://en.wikipedia.org/wiki/Industry_Foundation_Classes) webviewer, computational pipelines, etc... +* [A New Kind Of Forge in AEC](https://www.linkedin.com/pulse/new-kind-forge-aec-milovann-yanatchkov-fmyce) + +## Docker + +`docker run -p 3000:3000 gitaec.org/rvba/gitaec:latest` + +## Source + +* **Source code** on **[gitaec.org](https://gitaec.org)** ([repo](https://gitaec.org/rvba/forgejo)) +* [Better build instructions](https://pad.codeatlas.cc/s/42oGIVy5N#) to come +* See [Open discussions](https://pad.codeatlas.cc/FehKN63SSSOctFESmnoi5A#) +* See also **[Fordj](https://fordj.org/)** + + +## 🚀 Samples + +* IFC viewer sample : [duplex](https://gitaec.com/rvba/hackathon-zurich/src/branch/main/ifc/duplex.ifc) +* (The viewer is ~5Mb, you may need to reload the page to see the result properly the first time) +* Automation [sample](https://gitaec.com/rvba/hackathon-zurich/src/branch/main/python/extract.py) in Python +* Automation action [sample](https://gitaec.com/rvba/hackathon-zurich/src/branch/main/.forgejo/workflows/update.yaml) and [logs](https://gitaec.com/rvba/hackathon-zurich/actions) +* Automation sample [output](https://gitaec.com/rvba/hackathon-zurich/src/branch/main/output/duplex.ifc.csv) + +Example of a commit history by [Bruno Postle](https://github.com/brunopostle) : + + +* [Added model ifc](https://gitaec.org/brunopostle/creative-freedom/src/commit/b28fbd13d182fb78d4cc79dad1b390c92e1750af/model.ifc) +* [Added terrain, retaining walls, stairs and deck columns](https://gitaec.org/brunopostle/creative-freedom/src/commit/c367f58c307db840494b58b991115f13b3687679/model.ifc) + +See more [Commit history](https://gitaec.org/brunopostle/creative-freedom/commits/branch/main) and [Revision graph](https://gitaec.org/brunopostle/creative-freedom/graph) + +Made with [IfcMerge](https://github.com/brunopostle/ifcmerge) + + +# AEC Hackathon Zurich + +* [AEC Hackathon Zurich](https://opensource.construction/events/aec-hackathon-zurich/) +* [AEC Hackathon Slack channel](https://aec-hackathon.slack.com/join/shared_invite/zt-42vrfeqo-2j4L6WUph61L6cRdg11nFQ) + + +## Slides + +* [Slides](https://pad.codeatlas.cc/AOlOlzDGQoGXic6hfTid2w#) + +## GitAEC + +* GitAEC is based on [Forgejo](https://forgejo.org), a fork of [Gitea](https://gitea.com) +* Gitea is a forge like Github or Gitlab +* Gitea is written in [Go](https://en.wikipedia.org/wiki/Go_(programming_language)) + +## Actions + +* Forgejo actions are based on [Act](https://github.com/nektos/act), a Go implementations of Github [Actions](https://github.com/features/actions) + +## Pipelines + +* GitAEC enables CI/CD design pipelines like Speckle [Automate](https://speckle.systems/blog/automate-with-speckle/) +* GitAEC viewer is based on [IFCjs](https://github.com/IFCjs) +* GitAEC computations are based on [IfcOpenShell](http://ifcopenshell.org/) / [Compas](https://compas.dev/#/) + + +## Contact + +* [Milovann Yanatchkov](https://rvba.fr/my.html) + +* 📨 contact@gitaec.com + + +## DDoS Mitigation + +🚨 **June 28th** : [gitaec.org](https://gitaec.org) is currently offline due to a [DDoS](https://en.wikipedia.org/wiki/Denial-of-service_attack) attack on its git services. We will be back online as soon as possible. In the meantime, you can browse examples on **[gitaec.com](https://gitaec.com/rvba/hackathon-zurich)**. + +July, 1st : **The incident is now closed** + +✏️ **[Postmortem report](https://en.wikipedia.org/wiki/Postmortem_documentation)** : Starting at the end of June 2024, we began noticing that our forges were slow to respond. We then checked our servers and discover that they were at full CPU capacity, permanently. This was caused by some computationally intensive requests involving git commands such as ``git blame``. We had to shut down our services for a couple of days to find a solution. Our web server logs showed up to 350,000 requests a day targeting git repositories from hundreds of different IPs. But despite this apparent diversity, a single user agent was involved : ``facebookexternalhit``. After some quick research, we found out that we were victims of a DDoS attack [involving a malicious use of the Facebook API](https://developers.facebook.com/community/threads/992798532416685/). By adding a simple user agent test in front of our server proxy (Nginx), we were able to reject these malicious requests. This seems to have "solved" the issue for now. + +