<feed xmlns='http://www.w3.org/2005/Atom'>
<title>camagru/src/app, branch master</title>
<subtitle>Webcam and upload photo editing web app</subtitle>
<id>http://git.tvcloud.fr/cgit.cgi/camagru/atom?h=master</id>
<link rel='self' href='http://git.tvcloud.fr/cgit.cgi/camagru/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/'/>
<updated>2026-03-22T12:57:45Z</updated>
<entry>
<title>Add rate limiting on login and password reset endpoints</title>
<updated>2026-03-22T12:57:45Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-22T12:57:45Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=94dbb795cc3fe9799d34beb5d6bfa052eba81b0c'/>
<id>urn:sha1:94dbb795cc3fe9799d34beb5d6bfa052eba81b0c</id>
<content type='text'>
Track attempts per IP in a rate_limits table with a sliding time
window. Login allows 5 failed attempts per 15 min, password reset
allows 3 requests per 15 min. Old entries are purged automatically.
</content>
</entry>
<entry>
<title>Add session cookie hardening and Nginx security headers</title>
<updated>2026-03-22T12:53:01Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-22T12:53:01Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=78e891f06ab94ef478de1c431157f7d634fe4ac8'/>
<id>urn:sha1:78e891f06ab94ef478de1c431157f7d634fe4ac8</id>
<content type='text'>
Set httponly, samesite=Lax, and auto-detected secure flag on session
cookies. Add X-Content-Type-Options, X-Frame-Options, and
Content-Security-Policy headers in Nginx. Document both in README.
</content>
</entry>
<entry>
<title>Add upload security: size limit, per-user and site-wide post caps</title>
<updated>2026-03-22T12:34:47Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-22T12:34:47Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=d6a9fd1c32f07b993cb8ecc3c1b7c22f7a0ce848'/>
<id>urn:sha1:d6a9fd1c32f07b993cb8ecc3c1b7c22f7a0ce848</id>
<content type='text'>
Reject base64 payloads over 10 MB, limit users to 50 posts each,
and cap total posts at 10,000 (~650 MB on disk). Document upload
security model in README.
</content>
</entry>
<entry>
<title>Add favicon using webcam.svg</title>
<updated>2026-03-22T12:24:50Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-22T12:24:18Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=6a2c38dff48529672411419e1f56df0671f40365'/>
<id>urn:sha1:6a2c38dff48529672411419e1f56df0671f40365</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace home page with redirect to gallery or login</title>
<updated>2026-03-21T21:57:36Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T21:57:36Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=6f300d7676aa36903c1a279aeb100d6f4caf1197'/>
<id>urn:sha1:6f300d7676aa36903c1a279aeb100d6f4caf1197</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add likes, comments, email notifications, and pagination to gallery</title>
<updated>2026-03-21T21:55:13Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T21:55:13Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=f9ad3f4dc05252839457579303a4e0a0f94d8b80'/>
<id>urn:sha1:f9ad3f4dc05252839457579303a4e0a0f94d8b80</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add user's own posts grid and post deletion to editor page</title>
<updated>2026-03-21T21:46:34Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T21:46:34Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=ec77d2f77b96488b1bc170ced2abab12b3c19416'/>
<id>urn:sha1:ec77d2f77b96488b1bc170ced2abab12b3c19416</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add editor with webcam/upload capture, overlay compositing, and gallery feed</title>
<updated>2026-03-21T21:36:11Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T21:36:11Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=d63e3c91a97d77b202e280ab0fa007dfbe1baa46'/>
<id>urn:sha1:d63e3c91a97d77b202e280ab0fa007dfbe1baa46</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add profile page for editing username, email, password, and notifications</title>
<updated>2026-03-21T20:49:57Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T20:49:57Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=f60a390f5c51039fd1efc1df9a6a7f3864ce0062'/>
<id>urn:sha1:f60a390f5c51039fd1efc1df9a6a7f3864ce0062</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add user authentication with email verification and password reset</title>
<updated>2026-03-21T20:35:51Z</updated>
<author>
<name>Thomas Vanbesien</name>
<email>tvanbesi@proton.me</email>
</author>
<published>2026-03-21T20:35:51Z</published>
<link rel='alternate' type='text/html' href='http://git.tvcloud.fr/cgit.cgi/camagru/commit/?id=bc54c8c31e7f50a7a365f9b4d22fe8c74a29f61a'/>
<id>urn:sha1:bc54c8c31e7f50a7a365f9b4d22fe8c74a29f61a</id>
<content type='text'>
Implements registration, login/logout, email verification via token,
and password reset flow. Includes CSRF protection, flash messages,
MailPit for dev email testing, and security docs in README.
</content>
</entry>
</feed>
