Schoolyard is a curiosity-driven short-form learning edtech platform that leverages intelligent content similarity to help users learn online.
- Runtime: Node.js with TypeScript
- Framework: Express.js with Apollo Server for GraphQL
- Database: PostgreSQL with TypeORM
- Caching: Redis with connect-redis for session management
- Authentication: Express-session with Argon2 for password hashing
- Email Service: Nodemailer for email communications
- File Storage: AWS SDK for cloud storage
- Development Tools:
- TypeScript for type safety
- Concurrently for parallel development tasks
- Nodemon for hot reloading
- GraphQL Upload for file handling
- React with TypeScript
- Modern UI components and styling
The platform implements a text analysis system using Word2Vec embeddings for semantic understanding and content relationships:
-
Sentence Embedding Generation
- Converts sentences into 100-dimensional vector representations
- Aggregates word-level embeddings to create sentence-level meaning
-
Semantic Distance Calculation
- Used to measure semantic similarity between different content pieces
- Supports automatic content relationship discovery
-
Content Relationship Management
- Maintains a graph of semantic relationships between content
- Supports both manual and automatic relationship creation
- Automatic content similarity detection
- Intelligent content linking
- Content relationship visualization
- Clone the repository
- Install dependencies:
# Server cd server npm install # Web Client cd ../web npm install
- Set up environment variables:
# Server cd server npm run gen-env
- Start development servers:
# Server (in server directory) npm run dev # Web Client (in web directory) npm run dev
npm run dev: Start development server with hot reloadingnpm run build: Build the TypeScript projectnpm run start: Start the production servernpm run deploy: Deploy the applicationnpm run gen-env: Generate TypeScript types from environment variables
npm run dev: Start Next.js development servernpm run build: Build the Next.js applicationnpm run start: Start the production Next.js servernpm run gen: Generate GraphQL types
Required environment variables:
- Database connection details
- Redis configuration
- AWS credentials
- Email service configuration
- Session secret
See .env.example for a complete list of required variables.