Wenlan
Wenlan is a source-backed AI knowledge base and LLM wiki for AI work: organize documents and decisions into pages you can find, inspect, and review.
Chat, files, tasks, and calendar — one single workspace for PhD student supervision.
ProductivityTypeScript · CSSGitHub @rafacastrocsicOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A colorful, Monday.com-style web app to supervise PhD students.
Built with Next.js 16, TypeScript, Tailwind 4, Prisma + SQLite, NextAuth v5, googleapis.
prisma/dev.db — swap to Postgres for production)googleapis library — Drive (folders/files listing) + Calendar (events)npm install
You need this for sign-in and for Drive/Calendar features.
http://localhost:3001http://localhost:3001/api/auth/callback/google.envDATABASE_URL="file:./dev.db"
AUTH_SECRET="generate-a-long-random-string" # openssl rand -base64 32
AUTH_URL="http://localhost:3001"
AUTH_TRUST_HOST="true"
AUTH_GOOGLE_ID="123-abc.apps.googleusercontent.com"
AUTH_GOOGLE_SECRET="GOCSPX-..."
# Single admin email. This account becomes "admin" on first sign-in (full control of all users + students).
ADMIN_EMAIL="[email protected]"
# Comma-separated. Emails in SUPERVISOR_EMAILS get the supervisor role on first sign-in.
SUPERVISOR_EMAILS="[email protected]"
CO_SUPERVISOR_EMAILS="[email protected],[email protected]"
Roles:
admin>supervisor>co_supervisor>student. The admin sees a red Admin entry in the sidebar that opens a page to edit any user's profile and role. Everyone can edit their own name/photo/color from Settings. Roles are decided on each sign-in by checking the email againstADMIN_EMAILand the email lists, so you can promote/demote by editing.envand asking the user to sign in again — the admin can also change a user's role at any time from the admin page.
npm run db:push # create tables
npm run db:seed # optional: load demo students, tickets, channels
PORT=3001 npm run dev
Open http://localhost:3001 and sign in with Google. The first time, you'll be asked to approve Drive + Calendar access.
Role assignment: anyone whose email is in
SUPERVISOR_EMAILSbecomes a supervisor on sign-in; anyone inCO_SUPERVISOR_EMAILSbecomes a co-supervisor; everyone else is a student. Changing the lists updates roles on the next sign-in.
Students tab shows everyone in your supervision portfolio./folders/ in the URL) and a Google Calendar ID (e.g. [email protected]).The Google Chat API requires a Google Workspace account and a Chat app registered with admin approval. Personal Gmail accounts can't use it. The in-app chat in PhDapp is a complete replacement that needs no extra setup.
If you do have Workspace, you can add a "Open in Google Chat" deep link on each channel later.
npm run dev # start dev server
npm run build # production build
npm run db:push # apply schema to sqlite
npm run db:reset # wipe and re-seed
npm run db:seed # seed demo data
npm run db:studio # GUI for the SQLite db
This is structured to deploy to Vercel/Render with one change: swap SQLite for Postgres.
DATABASE_URL.prisma/schema.prisma, change provider = "sqlite" to provider = "postgresql".npx prisma db push.AUTH_URL to your production URL and re-issue OAuth credentials with the production redirect URI.