diff --git a/public/brand/icons/brayer.svg b/public/brand/icons/brayer.svg new file mode 100644 index 0000000..1c8f022 --- /dev/null +++ b/public/brand/icons/brayer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/brand/icons/smopt.svg b/public/brand/icons/smopt.svg new file mode 100644 index 0000000..8170c25 --- /dev/null +++ b/public/brand/icons/smopt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/data/site.ts b/src/data/site.ts index 23f284a..532e215 100644 --- a/src/data/site.ts +++ b/src/data/site.ts @@ -110,6 +110,16 @@ export const PROJECTS: Project[] = [ pypi: 'nlpql', icon: 'nlpql.svg', }, + { + name: 'smopt', + display: 'SmOpt', + tagline: 'Penalty free first order solvers for optimization on the Stiefel manifold', + category: 'Optimization', + github: gh('smopt'), + docs: eggzecDocs('smopt'), + pypi: 'smopt', + icon: 'smopt.svg', + }, // ---- Numerics --------------------------------------------------------- { @@ -175,6 +185,15 @@ export const PROJECTS: Project[] = [ pypi: 'gnspy', icon: 'gnspy.svg', }, + { + name: 'brayer', + tagline: 'Desktop forms built from Pydantic models, with widgets chosen from the field types', + category: 'Tooling', + github: gh('brayer'), + docs: eggzecDocs('brayer'), + pypi: 'brayer', + icon: 'brayer.svg', + }, ] /** How a project is written in prose and on cards. */