Aurify is a modern web application designed to help users practice, learn, and engage with AI-powered feedback and community features. Built with React, Vite, TypeScript, shadcn-ui, and Tailwind CSS, Aurify offers a sleek, interactive experience for users interested in language learning, productivity, or other AI-driven tasks.
You can view the deployed app here: Aurify
When the app is finished, Aurify will use: Frontend: React, Vite, TypeScript, shadcn-ui, Tailwind CSS State Management: React Context, custom hooks Authentication: Firebase Auth (or similar) AI Services: Google Gemini API, custom feedback services Backend (optional): Firebase, or custom Node.js/Express server (if needed) Deployment: Vercel (recommended), Netlify, or similar Testing: Jest, React Testing Library (if added) CI/CD: GitHub Actions (optional) This stack is modern, scalable, and easy for contributors to work with.
To ensure code quality and prevent accidental changes to the main repository, all interns should work on their own forks. Here's how to get started:
Go to the main Aurify repo (e.g., https://github.com/Aurify-AI/Aurify) and click the "Fork" button at the top right. This will create a personal copy of the repo under your GitHub account.
git clone https://github.com/<your-username>/Aurify.git
cd AurifyFollow the setup instructions in the README to install dependencies and run the project locally.
git checkout -b feature/my-featureCommit your changes:
git add .
git commit -m "Describe your changes"git push origin feature/my-featureGo to your fork on GitHub, and you'll see a "Compare & pull request" button. Click it to open a PR against the main Aurify repo.
Your PR will be reviewed by a maintainer. Once approved, it will be merged into the main repo. Best Practices:
- Always work on a branch, never on main.
- Keep your fork up to date by syncing with the upstream repo regularly.
- Ask questions and request reviews if you're unsure about anything.
Aurify provides:
- AI-powered feedback and suggestions (using Google Gemini and other services)
- Community features for sharing and tracking progress
- Practice sessions and history tracking
- Authentication and user profiles
- Responsive design for mobile and desktop
Clone your fork
git clone <YOUR_FORK_URL>
cd aurifyInstall dependencies
npm installSet up environment variables
Create a .env file in the root directory and add your API keys and config. Example:
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
VITE_GEMINI_API_KEY=your_gemini_api_keyCheck src/lib/firebase.ts and src/services/ai/geminiService.ts for required variables.
4. Start the development server
npm run devThe app will be available at http://localhost:5173.
- Vite
- TypeScript
- React
- shadcn-ui
- Tailwind CSS
Aurify can be deployed using Vercel, Netlify, or any static hosting provider.
Use your preferred IDE
git clone <YOUR_GIT_URL>
cd <YOUR_PROJECT_NAME>
npm i
npm run devEdit a file directly in GitHub
Navigate to the file. Click the pencil icon. Commit your change.
Use GitHub Codespaces
Go to your repo → Code → Codespaces → New Codespace. Edit and commit directly.
src/
├─ lib/firebase.ts # Firebase init
├─ services/
│ ├─ authService.ts # Authentication (sign in/up/out)
│ ├─ profileService.ts # User profile CRUD
│ ├─ sessionService.ts # Practice session CRUD
│ ├─ feedbackService.ts # AI feedback storage
│ ├─ historyService.ts # Fetch sessions + feedback
│ ├─ loggingService.ts # Optional error/event logging
│ └─ ai/geminiService.ts # Google Gemini integration
└─ tests/services/ # Unit tests
authService → signIn, signUp, signOut, onAuthChange profileService → createProfile, updateProfile, getProfile sessionService → createSession, getSession, listSessions, deleteSession feedbackService → saveFeedback, listFeedback historyService → getHistory loggingService → logEvent geminiService → generateFeedback
users/{uid} – profile
sessions/{uid}/items/{sessionId} – practice sessions
feedback/{uid}/items/{feedbackId} – AI feedback linked to sessions
logs/{uid}/items/{logId} – optional logs
Framework: Jest (with React Testing Library if needed)
Add tests in src/tests/services/
import { describe, it, expect } from 'vitest';
describe('authService', () => {
it('placeholder test', () => {
expect(true).toBe(true);
});
});Run tests:
npm test- Never commit
.env. - Don't hardcode keys in services. Example Firestore rule for dev:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}Invalid API key → check .env values.
*Permission denied → Firestore rules may need adjusting.
Blank page → ensure npm run dev shows no build errors.
- Add
.env.example - Add JSDoc comments for services
- Add test placeholders