feat: scaffold initial DevPlace project with FastAPI, SQLite auth, and SSR routing

Add complete project skeleton including .gitignore, Makefile, AGENTS.md, config, database init with indexes, main app with router mounting for auth/feed/posts/comments/projects/profile/messages/notifications/votes, Pydantic models for signup/login/post/comment/project/message/profile, and auth router with signup/login page rendering and form handling.
This commit is contained in:
2026-05-10 07:08:12 +00:00
commit 15a3b990fe
54 changed files with 5906 additions and 0 deletions
+194
View File
@@ -0,0 +1,194 @@
.landing {
min-height: 100vh;
background: linear-gradient(135deg, #0f0a1a 0%, #1a0a2e 50%, #0f0a1a 100%);
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
}
.landing::before {
content: "";
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
}
.landing-nav {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1rem 2rem;
position: relative;
z-index: 1;
}
.landing-logo {
font-size: 1.5rem;
font-weight: 800;
color: var(--text-primary);
letter-spacing: -0.02em;
}
.landing-logo span {
color: var(--accent);
}
.landing-nav-links {
display: flex;
align-items: center;
gap: 1.5rem;
}
.landing-nav-links a {
color: var(--text-secondary);
font-size: 0.875rem;
font-weight: 500;
}
.landing-nav-links a:hover {
color: var(--text-primary);
}
.landing-hero {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
padding: 4rem 2rem;
position: relative;
z-index: 1;
}
.landing-hero h1 {
font-size: 3.5rem;
font-weight: 800;
line-height: 1.1;
margin-bottom: 1rem;
letter-spacing: -0.03em;
}
.landing-hero h1 span {
color: var(--accent);
}
.landing-hero p {
font-size: 1.125rem;
color: var(--text-secondary);
max-width: 600px;
margin-bottom: 2rem;
line-height: 1.6;
}
.landing-cta {
padding: 1rem 2.5rem;
font-size: 1.125rem;
border-radius: var(--radius-lg);
background: var(--accent);
color: #fff;
font-weight: 700;
transition: all 0.2s;
}
.landing-cta:hover {
background: var(--accent-hover);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(255, 107, 53, 0.3);
}
.landing-features {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
max-width: 800px;
margin: 2rem auto 0;
position: relative;
z-index: 1;
}
.landing-feature {
text-align: center;
padding: 1rem;
}
.landing-feature-icon {
font-size: 1.5rem;
margin-bottom: 0.5rem;
}
.landing-feature h3 {
font-size: 0.8125rem;
color: var(--text-primary);
font-weight: 600;
}
.landing-daily-topic {
max-width: 800px;
margin: 3rem auto 0;
padding: 1.5rem;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
text-align: left;
position: relative;
z-index: 1;
}
.landing-daily-topic-label {
font-size: 0.75rem;
font-weight: 700;
color: var(--accent);
text-transform: uppercase;
letter-spacing: 0.1em;
margin-bottom: 0.5rem;
}
.landing-daily-topic h3 {
font-size: 1.125rem;
margin-bottom: 0.5rem;
}
.landing-daily-topic p {
font-size: 0.875rem;
color: var(--text-secondary);
margin-bottom: 0.75rem;
}
.landing-daily-topic-links {
display: flex;
gap: 1rem;
}
.landing-daily-topic-links a {
font-size: 0.8125rem;
font-weight: 600;
}
.landing-auth-link {
font-size: 0.875rem;
color: var(--text-secondary);
margin-top: 1.5rem;
position: relative;
z-index: 1;
}
.landing-auth-link a {
color: var(--accent);
font-weight: 600;
}
@media (max-width: 768px) {
.landing-hero h1 {
font-size: 2rem;
}
.landing-features {
grid-template-columns: repeat(2, 1fr);
}
.landing-nav {
padding: 0.75rem 1rem;
}
}