Leximory is a language learning platform designed to enhance foreign language proficiency, vocabulary in particular, by means of intensive input.
Leximory integrates features like:
- One-click foreign publication importing,
- AI-driven targeted annotations with etymologies,
- Combination of listening with reading,
- Easy reviewing of saved words,
- Save a word through our iOS Shortcuts Integration.
The platform supports collaborative learning with shared libraries and study groups, making it ideal for both individual learners and academic settings.
The platform is built with Next.js, Xata, Clerk, Upstash, Vercel AI SDK and Inngest.
Create a .env.local
file in the project root and fill it with the following variables:
# Clerk authentication keys
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=<your_clerk_publishable_key>
CLERK_SECRET_KEY=<your_clerk_secret_key>
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
# Xata database configuration
XATA_BRANCH=main
XATA_API_KEY=<your_xata_api_key>
# Upstash Redis configuration
UPSTASH_REDIS_REST_URL=<your_upstash_redis_url>
UPSTASH_REDIS_REST_TOKEN=<your_upstash_redis_token>
# API keys for AI services
OPENAI_API_KEY=<your_openai_api_key>
ELEVENLABS_API_KEY=<your_elevenlabs_api_key>
# VAPID keys for web push notifications
NEXT_PUBLIC_VAPID_PUBLIC_KEY=<your_vapid_public_key>
VAPID_PRIVATE_KEY=<your_vapid_private_key>
# Inngest keys
INNGEST_SIGNING_KEY=<your_inggest_signing_key>
INNGEST_EVENT_KEY=<your_inggest_event_key>
NEXT_PUBLIC_URL=https://leximory.com
- Clerk: Provides authentication services. Obtain keys from Clerk.
- Xata: Hosts the project database. Create a project at Xata to get an API key.
- Upstash: Offers Redis services for rate limiting. Set up at Upstash to receive REST URL and token.
- OpenAI: Provides AI annotation. Register at OpenAI for API access.
- ElevenLabs: Enables AI-powered voice synthesis. Get your API key from ElevenLabs.
- VAPID: Used for sending web push notifications. Generate VAPID keys using web-push libraries or online tools.
You need to initialise the Xata database first.
Generate the schema for Leximory by running the following command:
xata schema upload schema.json
You can find more specific documentation on their website.
After installing dependencies, run:
npm run dev
Access the application at http://localhost:3000
.