Commit graph

117 commits

Author SHA1 Message Date
d7f7460601 package laravel backend with nix 2026-05-08 10:50:08 +03:00
72cdd7dc4e
merge frontend-cypress 2026-05-06 23:27:09 +03:00
d40efeec70
add cypress admin actions spec 2026-05-06 23:26:55 +03:00
db910c9431
add cypress post page spec 2026-05-06 23:26:37 +03:00
6f160ddd4e
add cypress new-post spec 2026-05-06 23:26:14 +03:00
66ad7b1a0f
add cypress profile page spec 2026-05-06 23:26:00 +03:00
84ee24c2ee
add cypress home page spec 2026-05-06 23:25:44 +03:00
07f9746316
add cypress guest-routes spec 2026-05-06 23:25:26 +03:00
910bc98197
add cypress confirm-email spec 2026-05-06 23:25:14 +03:00
9db7920f80
add cypress login spec 2026-05-06 23:25:01 +03:00
75ada812bc
add cypress signup spec 2026-05-06 23:24:50 +03:00
178193bfd8
add cypress api-driven seeding helpers
cy.signupViaApi, cy.fetchLatestConfirmToken (parses the mailpit
inbox), cy.confirmViaApi, cy.loginViaApi, cy.logoutViaApi, plus
composed seedConfirmedUser/seedAdmin/seedPostAs/seedFeaturedPost
so each spec can build its own fixture without going through
the UI for setup.
2026-05-06 23:24:26 +03:00
7f744410bf
wire mailpit and db:promote cypress tasks 2026-05-06 23:23:13 +03:00
30738b163d
add user:promote artisan command
Marks the user with the given email as an admin. Used by the
cypress harness to bootstrap an admin without a public promote
endpoint and is also useful for ops.
2026-05-06 23:23:00 +03:00
eb59f4ca2d
route dev mail through mailpit
Switch from MAIL_MAILER=log to smtp pointing at mailpit on
:1025. From-address mirrors LaravelEmailFactory's confirmation
email format. phpunit.xml keeps MAIL_MAILER=array so unit and
feature tests do not touch mailpit.
2026-05-06 23:21:48 +03:00
4ac2323a2a
add mailpit to dev shell and process-compose
Mailpit listens on 1025 (smtp) and 8025 (web ui). Backend now
depends on it as a healthy dep so dev signups can flush their
confirmation emails to mailpit instead of /dev/null.
2026-05-06 23:21:25 +03:00
effdde84a5
merge frontend-profile-and-post 2026-05-06 22:52:32 +03:00
6ffa499c79
implement profile, post, and new-post views
ProfilePage shows a user's posts and exposes a New Post button
when the logged-in user is the owner; admins see a Promote
control. PostPage shows the post, its comments, and forms for
adding/deleting comments. Post-author and admin can delete
posts; admins can feature or unfeature any post into one of
the two slots from this view.
2026-05-06 22:52:32 +03:00
bc80556d7c
merge frontend-home-and-search 2026-05-06 22:50:56 +03:00
1997870da5
implement home page with featured posts, recent posts, and user search 2026-05-06 22:50:55 +03:00
f4f2d22440
merge frontend-auth-views 2026-05-06 22:49:32 +03:00
ff071c71ca
implement signup, confirm-email, login, check-email views 2026-05-06 22:49:32 +03:00
d85d460fd1
merge frontend-auth-store 2026-05-06 22:48:22 +03:00
ae7db07ec3
add api client and auth store
apiFetch wrapper sends JSON with credentials, parses error
shapes off the backend's {error: '...'} responses, and exposes
typed helpers (apiGet, apiPost, apiDelete). Auth store now
drives the real /signup -> /confirm-email -> /login -> /me ->
/logout flow. Vite dev proxy points /api at the backend on
:8000.
2026-05-06 22:48:17 +03:00
7b00fa5f68
merge frontend-scaffold 2026-05-06 22:47:14 +03:00
568dc4aabe
scaffold blog_portal vue 3 + pinia + cypress frontend
Mirrors youngstartup/frontend/startups_portal scaffolding:
Vite, Vue 3 (composition API + script setup), TypeScript strict,
Pinia, Vue Router 5, oxlint + eslint + oxfmt, and Cypress with
db:reset / db:seed tasks. Views and the auth store are stubs
filled in by the next branches; routes and the header chrome
are wired so the build passes.
2026-05-06 22:47:09 +03:00
6f95a5b7b8
merge seeders 2026-05-06 22:38:18 +03:00
beb4ddd1e9
split seeders by domain entity
Replaces the laravel-default scaffold seeder with one file per
domain (AdminUser, User, Post, Comment) plus a config/seed.php
to source admin credentials from env. DatabaseSeeder is now a
pure orchestrator that calls the sub-seeders in dependency
order.
2026-05-06 22:38:14 +03:00
c55852ec12
merge user-search-and-admin-promote 2026-05-06 22:36:19 +03:00
a3f90d1e85
implement user search and admin promote endpoints
GET /users?q=... is public; POST /admin/users/promote is auth
required and admin-checked inside the use case.
2026-05-06 22:36:15 +03:00
56136f8bcf
test user search and admin promote endpoints 2026-05-06 22:36:10 +03:00
ac7295faf3
implement PromoteUserToAdmin use case 2026-05-06 22:34:53 +03:00
8cbc84b051
test PromoteUserToAdmin use case 2026-05-06 22:34:29 +03:00
d917e76f1b
implement SearchUsers use case 2026-05-06 22:34:08 +03:00
31a807f0ae
test SearchUsers use case 2026-05-06 22:33:22 +03:00
3c97a19e2d
merge featured-posts 2026-05-06 22:32:50 +03:00
8ac5a5b18a
implement featured post admin endpoints
Adds POST /admin/posts/feature, POST /admin/posts/unfeature
(both auth-required, admin-checked inside controller via the
use case's ForbiddenException), and public GET /posts/featured.
Post serialization now includes featureSlot.
2026-05-06 22:32:46 +03:00
8983b69fa1
test featured posts admin endpoints 2026-05-06 22:32:36 +03:00
e4791de81a
implement ListFeaturedPosts use case 2026-05-06 22:30:49 +03:00
e61492f864
test ListFeaturedPosts use case 2026-05-06 22:30:32 +03:00
a8f59afc30
implement ClearFeaturedPost use case 2026-05-06 22:30:17 +03:00
7bd3ff78b4
test ClearFeaturedPost use case 2026-05-06 22:29:54 +03:00
ee95bcafc9
implement SetFeaturedPost use case 2026-05-06 22:29:34 +03:00
13ca655f9b
test SetFeaturedPost use case 2026-05-06 22:29:09 +03:00
f73e5a1af5
extend Post entity with feature slot
Adds nullable feature_slot column (unique) plus repo
findByFeatureSlot/findFeatured/update methods so admins can
pin a post into one of two slots.
2026-05-06 22:28:45 +03:00
64a334c63e
test Post entity feature slot 2026-05-06 22:27:18 +03:00
ec4f729c63
merge post-comment-controllers 2026-05-06 22:26:40 +03:00
59d4ed88c4
implement post and comment controllers
Wires PostController (recent, show, create, delete, listByUser)
and CommentController (listForPost, create, delete) to the
existing use cases. Posts and comments expose author display
names alongside user IDs. CommentRepository binding added to
RepositoryServiceProvider.
2026-05-06 22:26:35 +03:00
8614858558
test post and comment controllers
Adds AuthenticatesUsers feature trait that runs the full
signup -> confirm -> login flow and exposes the resulting auth
cookie. Bumps phpunit defaultTimeLimit to 30 seconds so the
multi-bcrypt-per-test feature flow finishes inside the limit.
2026-05-06 22:26:10 +03:00
fa63005db7
merge comment-domain 2026-05-06 22:16:43 +03:00