ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
AI-powered Career Coach Application
Translation pending
EducationPython · JavaScriptGitHub @OpenOwls-at-TempleOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
ask-clara
Ask Clara (AI Career Coach)
Clara ("Ask Clara") is an AI career coach built for Temple University undergraduate, graduate, and PhD students. It helps students move from self-assessment to targeted job applications by providing persistent, personalized, and always-available career guidance.
Clara complements the Temple Career Center by acting as a low-pressure, always-on starting point that prepares students for meaningful engagements with human advisors.
Clara is a three-tier web application built with:Read the full README ↗Clara ("Ask Clara") is an AI career coach built for Temple University undergraduate, graduate, and PhD students. It helps students move from self-assessment to targeted job applications by providing persistent, personalized, and always-available career guidance.
Clara complements the Temple Career Center by acting as a low-pressure, always-on starting point that prepares students for meaningful engagements with human advisors.
Clara is a three-tier web application built with:
claude-sonnet-4-6 or compatible) via a server-side multi-agent orchestratorThis project uses a hybrid database setup (Postgres + MongoDB). In services writing to both:
Ensure you have the following installed on your machine:
From the project root, start PostgreSQL and MongoDB using Docker Compose:
docker compose up -d
This starts:
localhost:5432 (Username: user, Password: password, Database: clara)localhost:27017Navigate to the backend directory and set up your Python virtual environment:
cd backend
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows (cmd):
# .venv\Scripts\activate.bat
# Install dependencies
pip install -r requirements.txt
Copy .env.example to .env:
cp .env.example .env
Fill out the variables inside .env:
ANTHROPIC_API_KEY: Your Anthropic developer console API key.DATABASE_URL: postgresql+asyncpg://user:password@localhost:5432/clara (pre-filled)MONGODB_URI: mongodb://localhost:27017/clara (pre-filled)GOOGLE_CLIENT_ID: Your Google OAuth 2.0 Web Client ID.GOOGLE_CLIENT_SECRET: Your Google OAuth 2.0 Client Secret.JWT_SECRET: A long random string to sign JWTs (e.g., generate via openssl rand -hex 32).ALLOWED_EMAIL_DOMAIN: temple.eduENVIRONMENT: localTEST_LOGIN_SECRET: Enables the local test-login flow and the Playwright E2E suite (see "Test Login" below). The pre-filled default matches the frontend's; never set this in staging/production.Initialize and migrate the database schema using Alembic:
python -m alembic upgrade head
python -m uvicorn app.main:app --reload
The API documentation will be available at http://localhost:8000/docs.
In a new terminal window, navigate to the frontend directory:
cd frontend
# Install Node modules
npm install
Copy .env.example to .env:
cp .env.example .env
Update .env:
VITE_API_BASE_URL: /api (This works because Vite's dev server proxies /api to the backend)VITE_GOOGLE_CLIENT_ID: Your Google OAuth Web Client ID.VITE_TEST_LOGIN_SECRET: Must match the backend'sTEST_LOGIN_SECRET (see "Test Login" below). The .env.example defaults on both sides already match.npm run dev
The React application will be running locally at http://localhost:5173.
You can sign in without a Google account or a @temple.edu email while developing locally. When the frontend runs in dev mode (npm run dev), the sign-in page shows a "Local Development Only" form: enter any @temple.edu email (default [email protected]) and click Test Login. The backend creates (or reuses) a synthetic user with that email and issues a normal session.
For this to work, the backend .env must have:
ENVIRONMENT=localTEST_LOGIN_SECRET set (the .env.example default is e2e-local-secret)and the frontend's VITE_TEST_LOGIN_SECRET must match TEST_LOGIN_SECRET. If you keep the .env.example defaults on both sides, no extra configuration is needed.
This is safe by design:
POST /auth/test-login) responds 404 unless ENVIRONMENT=local and the secret matches, so it is indistinguishable from a nonexistent route in staging/production. Never set TEST_LOGIN_SECRET outside local development.ALLOWED_EMAIL_DOMAIN (temple.edu).The same endpoint powers the Playwright E2E suite (frontend/e2e/), which authenticates test users through it instead of Google SSO.
Ensure your virtual environment is active in the backend directory, then run:
# Run all tests (requires Docker services to be up for database-dependent integration tests)
pytest
# Run a specific test file
pytest tests/test_assessment.py
# Run tests by name pattern
pytest -k "test_student_cannot"
From the frontend directory, run:
npm test
We use black for auto-formatting Python code:
black app/
We use eslint and prettier:
# Run ESLint check
npm run lint
# Run Prettier format
npx prettier --write src/
Whenever you modify SQLAlchemy models in backend/app/models/, auto-generate a new migration:
cd backend
python -m alembic revision --autogenerate -m "describe changes here"
python -m alembic upgrade head
backend/app/llm/.users.llm_generation_count). If the generation fails, the credit must be refunded.