Praxis is an interactive AI programming tutor: you chat with an AI to receive incremental coding challenges, write code in an embedded editor, run the code against automated tests, and get adaptive feedback and the next challenge, all inside the browser.
- Features
- Getting Started
- Development
- Build for Production
- Project Structure
- Usage Examples
- Contribution Guidelines
- License
- Contact
- Vite-powered fast dev server and build pipeline
- React with TypeScript for type-safe UI development
- Minimal, modular component layout under
src/components - Example static assets available in
public/ - Opinionated structure suitable for learning or bootstrapping an app
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Node.js 18 or later (recommended LTS)
- npm (comes with Node) or yarn/pnpm if you prefer an alternative package manager
Verify your Node.js and npm versions:
node --version
npm --version- Clone the repository:
git clone https://github.com/your-username/praxis.git
cd praxis- Install dependencies:
npm install
# or
# yarn
# pnpm install- Start the development server:
npm run devOpen http://localhost:5173 (or the port reported by Vite) in your browser.
- Run the lint/typecheck (if configured):
npm run type-check
npm run lint- Run unit tests (if present):
npm testMake changes in src/ and the dev server will hot-reload. For UI work, edit components in src/components/:
ChatPanel.tsx— sample chat UICodeEditorPanel.tsx— placeholder for a code editorTestOutputPanel.tsx— results/output panel
To build an optimized production bundle:
npm run buildTo preview the production build locally:
npm run previewTop-level files and folders you'll regularly interact with:
index.html— Vite entry HTMLsrc/— application source codeApp.tsx— root app shellindex.tsx— app bootstrapcomponents/— reusable UI componentstypes.ts— TypeScript types used across the app
public/— static assets served as-ispackage.json— scripts and dependenciestsconfig.json— TypeScript configurationvite.config.ts— Vite configuration
Run the dev server and navigate to the app. Example: if you want to add a new component and use it in the app:
- Create
src/components/MyWidget.tsx:
import React from 'react';
export default function MyWidget() {
return <div className="my-widget">Hello from MyWidget</div>;
}- Import and render
MyWidgetinsrc/App.tsx:
import MyWidget from './components/MyWidget';
function App() {
return (
<div>
<MyWidget />
</div>
);
}
export default App;Contributions are welcome. To make the collaboration smooth, please follow these guidelines:
-
Fork the repository and create a topic branch for your changes:
-
Write clear, focused commits. Use conventional commit messages when possible.
-
Run tests and linters locally before opening a pull request.
-
Open a pull request describing the change, why it's needed, and any notes for reviewers.
Coding standards and tips:
- Use TypeScript types and interfaces for new modules.
- Keep components small and focused; prefer composition over monolithic components.
- Add or update unit tests for any non-trivial logic.
This project is provided under the MIT License. See the LICENSE file for details.
Key points:
- Permission is granted to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.
- The software is provided "as is", without warranty of any kind.
If you want a different license for your project (e.g., Apache 2.0, GPLv3), update this section and include the proper license file.
For questions, issues, or collaboration inquiries, please contact:
- Your Name — spaudel@vassar.edu
- GitHub: https://github.com/smpdl
If you'd like to contribute or report a bug, please open an issue on the repository.
Thank you for checking out Praxis!