<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ceres, branch db-completion</title>
<subtitle>Recipe server for your favorite dishes</subtitle>
<id>https://cgit.xengineering.eu/ceres/atom?h=db-completion</id>
<link rel='self' href='https://cgit.xengineering.eu/ceres/atom?h=db-completion'/>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/'/>
<updated>2024-02-08T20:55:41Z</updated>
<entry>
<title>WIP: model: Rework database model</title>
<updated>2024-02-08T20:55:41Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-02-06T18:58:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=480d7740a172002fc6b115f9ca4bf73bf7809ead'/>
<id>urn:sha1:480d7740a172002fc6b115f9ca4bf73bf7809ead</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Show steps on recipe page</title>
<updated>2024-01-18T18:52:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-17T20:37:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=325a2740e39b7c7937bfae8b76b092dd900fec9a'/>
<id>urn:sha1:325a2740e39b7c7937bfae8b76b092dd900fec9a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add recipe step view</title>
<updated>2024-01-17T20:03:36Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-17T19:56:33Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=34fa1017a697287540d92d8c36ecca988f936f16'/>
<id>urn:sha1:34fa1017a697287540d92d8c36ecca988f936f16</id>
<content type='text'>
This is the next increment to implement recipe steps.
</content>
</entry>
<entry>
<title>model: Rename step rank to step index</title>
<updated>2024-01-17T19:59:20Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-17T19:19:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=644ddcde14c0545dd667eaf096dadab518ad90a7'/>
<id>urn:sha1:644ddcde14c0545dd667eaf096dadab518ad90a7</id>
<content type='text'>
This name reflects the purpose of the column better. It is used to order
the recipe steps of a recipe.
</content>
</entry>
<entry>
<title>Implement recipe editing</title>
<updated>2024-01-08T18:36:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-08T18:36:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=ae1a31f226de5701683231afaabf0f66503ca17d'/>
<id>urn:sha1:ae1a31f226de5701683231afaabf0f66503ca17d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement recipe page</title>
<updated>2024-01-08T18:33:24Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2024-01-08T18:27:47Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=43e7bb10eaade56a9444ec089aa3102218231868'/>
<id>urn:sha1:43e7bb10eaade56a9444ec089aa3102218231868</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement index page with recipe overview</title>
<updated>2023-12-27T12:33:59Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T12:33:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=c6d2e9dadcd08cdf82aab507d9d4d8d58574df20'/>
<id>urn:sha1:c6d2e9dadcd08cdf82aab507d9d4d8d58574df20</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Provide CSS via HTTP server</title>
<updated>2023-12-27T12:11:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T12:07:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=1978c5257e2cf4720716b59c3d69dc21cf457c18'/>
<id>urn:sha1:1978c5257e2cf4720716b59c3d69dc21cf457c18</id>
<content type='text'>
This is a simple first HTTP handler and is required to display the
website with the intended design.
</content>
</entry>
<entry>
<title>Add simple.css submodule</title>
<updated>2023-12-27T12:11:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T12:10:31Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=8fc20cc3689dcad169f853102a868a6116cc7b26'/>
<id>urn:sha1:8fc20cc3689dcad169f853102a868a6116cc7b26</id>
<content type='text'>
This CSS framework uses nearly only the standard HTML tags and is thus
easy to adopt / replace.
</content>
</entry>
<entry>
<title>Add HTTP server without handlers</title>
<updated>2023-12-27T12:05:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:59:52Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=508aa4b7e4afa4da593021568afad1d565e8b968'/>
<id>urn:sha1:508aa4b7e4afa4da593021568afad1d565e8b968</id>
<content type='text'>
This adds the infrastructure to add HTTP handlers. It already sets up
the HTTP server and makes sure it is started and stopped.
</content>
</entry>
<entry>
<title>Add github.com/gorilla/mux</title>
<updated>2023-12-27T12:05:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:56:46Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=4721d69eb139e7da26f5454b80c39a4f1c8f1e23'/>
<id>urn:sha1:4721d69eb139e7da26f5454b80c39a4f1c8f1e23</id>
<content type='text'>
This dependency provides a more extended HTTP routing than the Go
standard library.
</content>
</entry>
<entry>
<title>Shutdown only on OS signal</title>
<updated>2023-12-27T12:05:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:45:21Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=8b60724f7532c22be991cf15e4495e61c8fc7287'/>
<id>urn:sha1:8b60724f7532c22be991cf15e4495e61c8fc7287</id>
<content type='text'>
This is the intended behaviour for production and also for debugging to
at least inspect the data directory of Ceres.
</content>
</entry>
<entry>
<title>model: Inject test data into database</title>
<updated>2023-12-27T12:05:05Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T12:04:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=8ce328fafd9b2ad152f0afc16176cf01e1e66669'/>
<id>urn:sha1:8ce328fafd9b2ad152f0afc16176cf01e1e66669</id>
<content type='text'>
This is useful for debugging and testing.
</content>
</entry>
<entry>
<title>model: Add initial SQL migration</title>
<updated>2023-12-27T11:42:25Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:39:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=e7bbadc8f469d5cbfbc012932c83d1d440b6e8a3'/>
<id>urn:sha1:e7bbadc8f469d5cbfbc012932c83d1d440b6e8a3</id>
<content type='text'>
This provides the basic table structure to the database.
</content>
</entry>
<entry>
<title>model: Implement database connection</title>
<updated>2023-12-27T11:27:53Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:14:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=c452ca52b9c18303045db838c6cead62c1454172'/>
<id>urn:sha1:c452ca52b9c18303045db838c6cead62c1454172</id>
<content type='text'>
The already implemented storage folder should contain a sqlite database
to store most parts of the Ceres user data.
</content>
</entry>
<entry>
<title>Add github.com/mattn/go-sqlite3</title>
<updated>2023-12-27T11:21:33Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:16:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=aaf2bad8d3ab2a4f825c2d3db3f2d17de68e08b4'/>
<id>urn:sha1:aaf2bad8d3ab2a4f825c2d3db3f2d17de68e08b4</id>
<content type='text'>
This can be used to implement the `database/sql` interface from the Go
standard library for sqlite databases. This is the currently preferred
method to store user data for Ceres.
</content>
</entry>
<entry>
<title>model: Implement temporary storage directory</title>
<updated>2023-12-27T11:18:14Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-12-27T11:03:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=318f00c5d496296e45311ea81e8b80d9bd03b1d5'/>
<id>urn:sha1:318f00c5d496296e45311ea81e8b80d9bd03b1d5</id>
<content type='text'>
This temporary directory is provided to store the user data for the
Ceres recipe server during development and testing.
</content>
</entry>
<entry>
<title>Remove complete implementation</title>
<updated>2023-09-17T09:07:08Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-09-17T09:07:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=ea54de7d32e6b576ccfb430e7e57811b7c4587fe'/>
<id>urn:sha1:ea54de7d32e6b576ccfb430e7e57811b7c4587fe</id>
<content type='text'>
Restarting from scratch seems to be the fastest approach to switch to
sqlite and get rid of some other structural mistakes from the past.
</content>
</entry>
<entry>
<title>Update CHANGELOG.md for version 0.3.1 release</title>
<updated>2023-05-07T08:41:03Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-07T08:41:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=d0f58c4812c8b5821e9ed15806fae44f7b1fb095'/>
<id>urn:sha1:d0f58c4812c8b5821e9ed15806fae44f7b1fb095</id>
<content type='text'>
</content>
</entry>
<entry>
<title>index.html: Remove autofocus to search field</title>
<updated>2023-05-07T08:36:27Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-07T08:36:27Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=41b2ab145a685c1d55cff84c9b74a9eeabd6ebc7'/>
<id>urn:sha1:41b2ab145a685c1d55cff84c9b74a9eeabd6ebc7</id>
<content type='text'>
This is useful for desktops but is annoying on mobile devices since a
touchscreen keyboard is overlayed automatically and hides half of the
index page.
</content>
</entry>
<entry>
<title>Update CHANGELOG.md for release v0.3.0</title>
<updated>2023-05-01T17:33:26Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-01T17:33:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=2357f619d3f29174a97c3b6a3eddb53ee34dd050'/>
<id>urn:sha1:2357f619d3f29174a97c3b6a3eddb53ee34dd050</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove link to Gemini specification</title>
<updated>2023-05-01T17:24:04Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-01T17:24:04Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=20b251b70c475e718508c9ac7c5258d9a9e4ae29'/>
<id>urn:sha1:20b251b70c475e718508c9ac7c5258d9a9e4ae29</id>
<content type='text'>
This project does not use the Gemini markup anymore. It was replaced by
JSON.
</content>
</entry>
<entry>
<title>Implement ingredient summary</title>
<updated>2023-05-01T17:20:43Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-01T17:20:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=60b7cf6456a40fef76ca2aecc4dd79956a22b410'/>
<id>urn:sha1:60b7cf6456a40fef76ca2aecc4dd79956a22b410</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Show link just if not empty</title>
<updated>2023-05-01T16:15:21Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-01T16:12:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=c646cc886691de6ca0e4cf584f4385e3dadf5f79'/>
<id>urn:sha1:c646cc886691de6ca0e4cf584f4385e3dadf5f79</id>
<content type='text'>
Otherwise this is confusing.
</content>
</entry>
<entry>
<title>Switch to tripel to describe ingredients</title>
<updated>2023-05-01T16:07:55Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-05-01T16:07:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=358c5e76d67477b26d841985649b9279d7633fc3'/>
<id>urn:sha1:358c5e76d67477b26d841985649b9279d7633fc3</id>
<content type='text'>
It is always the same:

- amount float32
- unit   string
- type   string

This is good as a starting point. Later the types of ingredients might
have to be tracked. In this a string as key is maybe not the best.
</content>
</entry>
<entry>
<title>Focus search input on index page load</title>
<updated>2023-04-28T15:22:59Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-04-28T15:22:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=ca3c6edebc835eadbaa5c1f432193ad7b036bf86'/>
<id>urn:sha1:ca3c6edebc835eadbaa5c1f432193ad7b036bf86</id>
<content type='text'>
This allows the user to start typing without clicking into the input
field.
</content>
</entry>
<entry>
<title>Implement search bar on index page</title>
<updated>2023-04-28T14:53:10Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-04-28T10:53:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=127aede391be9defffb2d9afd89ef2c1a9e99627'/>
<id>urn:sha1:127aede391be9defffb2d9afd89ef2c1a9e99627</id>
<content type='text'>
This is way it is way easier to filter recipes by name.
</content>
</entry>
<entry>
<title>Replace simple.css submodule by release copy</title>
<updated>2023-04-28T10:26:01Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-04-28T10:26:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=2d9e1f6aef7abcd436f5cd5e2f5b5974b329b33e'/>
<id>urn:sha1:2d9e1f6aef7abcd436f5cd5e2f5b5974b329b33e</id>
<content type='text'>
This is way simpler to handle since you can get a full tarball of Ceres
with everything included which is necessary to run it.

The LICENSE of simple.css allows such a copy and stays inside the copy
to make clear that this folder uses the simple.css license and not the
one of Ceres.
</content>
</entry>
<entry>
<title>Fix add_recipes with default JSON</title>
<updated>2023-04-28T08:44:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-04-26T05:05:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=f624c71a26a522b2ea387a9f7e9f6ec84341b704'/>
<id>urn:sha1:f624c71a26a522b2ea387a9f7e9f6ec84341b704</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix empty title regression</title>
<updated>2023-04-28T08:44:29Z</updated>
<author>
<name>xengineering</name>
<email>me@xengineering.eu</email>
</author>
<published>2023-04-26T05:04:25Z</published>
<link rel='alternate' type='text/html' href='https://cgit.xengineering.eu/ceres/commit/?id=12daf84f2df56b639f7f37a7894612d5355a7c37'/>
<id>urn:sha1:12daf84f2df56b639f7f37a7894612d5355a7c37</id>
<content type='text'>
Empty title should be avoided because the recipe otherwise just
disappears.
</content>
</entry>
</feed>
