Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/site-build-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: site-build-check

on:
pull_request:
branches: [staging, dev, main]

workflow_dispatch:

# Allow this job to clone the repo and create a page deployment
permissions:
contents: read
id-token: write

jobs:
build:
runs-on: ubuntu-slim
environment:
name: github-pages
steps:
- name: Checkout your repository using git
uses: actions/checkout@v6
- name: Install, build, and upload your site
uses: withastro/action@v6
with:
package-manager: bun@latest
env:
ASTRO_DB_REMOTE_URL: ${{ secrets.ASTRO_DB_REMOTE_URL }}
ASTRO_DB_APP_TOKEN: ${{ secrets.ASTRO_DB_APP_TOKEN }}
GOOGLE_DRIVE_API_KEY: ${{ secrets.GOOGLE_DRIVE_API_KEY }}
# with:
# node-version: 20 # The specific version of Node that should be used to build your site. Defaults to 20. (optional)
# package-manager: pnpm@latest # The Node package manager that should be used to install dependencies and build your site. Automatically detected based on your lockfile. (optional)
Original file line number Diff line number Diff line change
@@ -1,17 +1,9 @@
name: Deploy to GitHub Pages
name: site-build-deploy

on:
# Trigger the workflow every time you push to the `main` branch
# Using a different branch name? Replace `main` with your branch’s name
push:
branches: [master, main]
# Allows you to run this workflow manually from the Actions tab on GitHub.
branches: [main]
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # 12:00 AM UTC (midnight)
- cron: '0 6 * * *' # 6:00 AM UTC
- cron: '0 12 * * *' # 12:00 PM UTC (noon)
- cron: '0 18 * * *' # 6:00 PM UTC

# Allow this job to clone the repo and create a page deployment
permissions:
Expand Down
18 changes: 4 additions & 14 deletions astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,8 @@ import db from '@astrojs/db';

import sitemap from '@astrojs/sitemap';

import partytown from '@astrojs/partytown';

export default defineConfig({
integrations: [
UnoCSS(),
svelte(),
db(),
sitemap(),
partytown({
config: {
forward: ['dataLayer.push'],
},
}),
],
integrations: [UnoCSS(), svelte(), db(), sitemap()],
env: {
schema: {
GOOGLE_DRIVE_API_KEY: envField.string({
Expand All @@ -30,5 +18,7 @@ export default defineConfig({
},
site: 'https://keshav.is-a.dev',
base: 'learning_trade',
devToolbar: {
enabled: false,
},
});

930 changes: 224 additions & 706 deletions bun.lock

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions docs/superpowers/specs/2026-04-26-landing-page-design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Learning Trade Landing Page Design

## Architecture & Framework
- Astro for structure (`src/pages/index.astro`).
- UnoCSS for utility-first styling (already configured with DaisyUI preset).
- Vanilla HTML/CSS structure within Astro.
- No client-side JavaScript beyond what Astro/DaisyUI handles natively.

## Visual Aesthetic (SaaS Minimalist)
- **Colors**: Deep dark mode background (slate-900/gray-950) with high-contrast text and a singular accent color (e.g., emerald or indigo) for primary actions.
- **Typography**: Clean, sans-serif fonts (Atkinson Hyperlegible / Alata from UnoCSS config) with generous line heights and tracking.
- **Layout**: Centered, balanced grids with ample whitespace (padding/margin).
- **Styling**: Soft, subtle borders (1px border-gray-800), rounded corners (rounded-xl/2xl), and muted text for secondary information.

## Component Structure

### 1. Hero Section
- Bold, clear value proposition headline ("Hyper-Local Study Resources").
- Subheadline explaining the personalization (College, Branch, Semester specific).
- Primary Call to Action (CTA) button ("Get Started" or "Find Resources").
- Secondary CTA or social proof ("Join X students").
- Background: Subtle, dark gradient or very faint grid pattern to add depth without noise.

### 2. Value Proposition / Features Grid
- A 3-column grid (responsive: 1 col on mobile, 3 on desktop).
- Each card highlights a core feature:
- **Hyper-Personalized**: Feed tailored to your exact academic context.
- **Resource Variety**: PYQs, Notes, Tips & Tricks.
- **Grow Your Profile**: Share resources, earn followers, build academic clout.
- Icons: Tabler icons (`i-tabler:*`) for each feature.
- Card Style: Dark gray background (bg-gray-800/50), subtle border, soft hover effect.

### 3. "How it Works" / Feed Preview (Mockup)
- A visual representation of the personalized feed.
- A minimalist mockup of a feed item (e.g., "Data Structures PYQ 2023 - Submitted by @studentA").
- Emphasizes the clean, SaaS-like UI the user will experience inside the app.

### 4. Footer (Minimal)
- Simple copyright.
- Links to About, Privacy, Contact (placeholders if pages don't exist).
- Minimalist design, low contrast text.

## Technical Implementation Details
- Use UnoCSS classes directly in Astro template.
- Use `dark:bg-*` and `dark:text-*` classes if theme toggling is expected, or just hardcode the dark theme classes since dark mode is explicitly requested. We'll default to explicit dark shades (e.g., `bg-gray-950`, `text-white`) to guarantee the dark mode aesthetic.
- Icons: `<div class="i-tabler:book text-3xl"></div>`
Loading