Development Setup
Complete guide for setting up Scoriet development environment on your local machine.
System Requirements
Minimum Requirements
- PHP: 8.2 or later
- Node.js: 18.x or later (LTS recommended)
- npm: 9.x or later
- MySQL/MariaDB: 5.7 or later (or PostgreSQL, SQLite for testing)
- RAM: 4GB minimum (8GB recommended)
- Disk Space: 5GB free space
Windows Setup Note
Development is performed on Windows. The database server is accessible via:
- MySQL Host:
localhost(for standard tools) - MySQL Host (curl/API):
10.0.0.8(required for curl commands) - Username:
root - Password:
admin
Step 1: Clone Repository
git clone https://github.com/your-repo/scoriet.git
cd scoriet
Step 2: Install Dependencies
Backend Dependencies
composer install
This installs:
- Laravel framework and dependencies
- Laravel Passport for OAuth2
- PHPOffice for spreadsheet support
- Stripe and PayPal SDKs
- Pest testing framework
Frontend Dependencies
npm install
This installs:
- React 19
- TypeScript
- Inertia.js
- Vite
- Tailwind CSS
- Ant Design Icons
- RC Dock
Step 3: Environment Configuration
Copy Environment File
cp .env.example .env
Generate Application Key
php artisan key:generate
This generates a unique encryption key for your application.
Configure Database
Edit .env and configure database connection:
Option A: MySQL (Recommended for Development)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=scoriet_db
DB_USERNAME=root
DB_PASSWORD=admin
Option B: SQLite (for Testing)
DB_CONNECTION=sqlite
DB_DATABASE=:memory:
Configure Laravel Passport
Update .env with Passport OAuth2 credentials:
VITE_PASSPORT_CLIENT_ID=1
VITE_PASSPORT_CLIENT_SECRET=your-secret-key-here
Configure Vite
Ensure Vite configuration for development:
VITE_APP_NAME=Scoriet
VITE_APP_VERSION=1.0.0.0
VITE_SHOW_DEMO_USERS=false
Configure Cache (Optional but Recommended)
For faster template compilation, use Redis:
CACHE_STORE=redis
TEMPLATE_CACHE_ENABLED=true
TEMPLATE_CACHE_TTL_HOURS=24
Or use file cache if Redis not available:
CACHE_STORE=file
TEMPLATE_CACHE_ENABLED=true
Step 4: Database Setup
Run Migrations
php artisan migrate
This creates all database tables:
- users
- projects
- schemas
- templates
- code_adjustments
- generation_logs
- And more...
Optional: Seed Demo Data
php artisan db:seed
This populates sample projects, templates, and schemas for testing.
Step 5: Laravel Passport Setup
Passport handles OAuth2 authentication. Set it up with these commands:
Install Passport
php artisan passport:install
This generates encryption keys used for token generation.
Create Password Grant Client
php artisan passport:client --password \
--name="Scoriet Password Grant Client" \
--provider=users
Output:
Client ID: 1
Client secret: your-secret-here
Copy the Client ID and Client secret to your .env:
VITE_PASSPORT_CLIENT_ID=1
VITE_PASSPORT_CLIENT_SECRET=your-secret-here
Create Personal Access Client
php artisan passport:client --personal \
--name="Scoriet Personal Access Client"
This allows the application to issue access tokens for API requests.
Verify Passport Configuration
php artisan passport:keys
Should output your encryption keys (in storage/oauth-*).
Step 6: Create Initial User
php artisan tinker
In the Tinker shell:
>>> App\Models\User::create([
'name' => 'Admin User',
'email' => 'admin@example.com',
'password' => bcrypt('password123'),
])
>>> exit
Or use artisan command:
php artisan make:user --name="Admin User" --email="admin@example.com"
Step 7: Build Frontend
Development Build
npm run dev
Starts Vite in development mode with hot reload. Keep this running in a terminal.
Production Build (when ready)
npm run build
Note: Do NOT run npm run build during normal development - Vite handles hot reload automatically.
Step 8: Start Development Servers
Option A: All-in-One (Recommended)
Runs Laravel server, queue worker, and Vite together:
composer run dev
This command (from composer.json scripts) starts:
- Laravel development server (port 8000)
- Queue worker (processes background jobs)
- Vite dev server (for frontend hot reload)
- Laravel Reverb WebSocket server
Keep this running while developing. Access the application at http://localhost:8000
Option B: Manual Start (if all-in-one doesn't work)
In separate terminal windows:
Terminal 1 - Laravel Server:
php artisan serve
Terminal 2 - Queue Worker:
php artisan queue:listen
Terminal 3 - Vite Dev Server:
npm run dev
Terminal 4 - Reverb WebSocket (optional):
php artisan reverb:start
Step 9: Access Application
Open your browser and navigate to:
http://localhost:8000
Demo Login (if enabled)
If VITE_SHOW_DEMO_USERS=true in .env, you'll see demo user buttons in login modal:
- Email:
demo-admin@example.com/ Password:password - Email:
demo-user@example.com/ Password:password
Or login with your created user:
- Email:
admin@example.com/ Password:password123
Verification Checklist
After setup, verify everything works:
# ✅ Check PHP version
php --version # Should be 8.2+
# ✅ Check Node version
node --version # Should be 18+
npm --version # Should be 9+
# ✅ Check database connection
php artisan tinker
>>> DB::connection()->getPDO()
>>> exit
# ✅ Check Passport setup
php artisan passport:keys
# ✅ Check Laravel can serve
php artisan serve # Should start on http://localhost:8000
# ✅ Check npm dependencies
npm list # Should show dependency tree
# ✅ Check code quality
npm run lint # Should pass linting
npm run types # Should have no type errors
Optional Setup
Code Quality Tools
ESLint with Auto-Fix
npm run lint
Checks and auto-fixes JavaScript/TypeScript code style.
Prettier Code Formatting
npm run format
Formats code to project standards.
TypeScript Type Checking
npm run types
Checks for TypeScript type errors without compiling.
Laravel Pint (PHP Code Quality)
composer run lint
Checks and fixes PHP code style (optional).
Testing
Run Pest PHP tests:
composer run test
Or with coverage:
composer run test -- --coverage
Common Issues & Solutions
Issue: "Module not found" in npm
Solution:
rm -rf node_modules package-lock.json
npm install
Issue: Laravel can't connect to database
Verify .env database settings:
php artisan tinker
>>> DB::connection()->getPDO()
Should not throw an error.
Issue: "Class not found" errors
Solution:
composer dump-autoload
Regenerates Composer autoload files.
Issue: Passport showing "invalid_client"
Verify Passport setup:
php artisan passport:install
And check .env has correct VITE_PASSPORT_CLIENT_ID and VITE_PASSPORT_CLIENT_SECRET.
Issue: Vite not compiling changes
Solution: Stop and restart:
npm run dev
Or if using composer run dev:
composer run dev
Issue: "localhost connection refused" for curl
For API calls, use instead of localhost:
curl http://10.0.0.8:8000/api/...
This is required on Windows development machines per project guidelines.
IDE Setup
VS Code
Recommended Extensions:
- PHP Intelephense (PHP development)
- Laravel Extension Pack (Laravel)
- Tailwind CSS IntelliSense
- ESLint
- Prettier - Code formatter
- Thunder Client (API testing)
.vscode/settings.json:
{
"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
},
"[javascript][typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.formatOnSave": true
}
Laravel IDE Helper (Optional)
composer require --dev barryvdh/laravel-ide-helper
php artisan ide-helper:generate
Generates IDE helper files for better autocomplete.
Next Steps
- Read Commands Reference for development commands
- Read Code Conventions for coding standards
- Create your first template in the UI
- Test code generation with a sample schema
- Review existing code in
/app/Services/to understand patterns
Additional Resources
- Laravel Documentation
- React Documentation
- TypeScript Documentation
- Inertia.js Documentation
- Tailwind CSS Documentation
- Vite Documentation
Support
If you encounter issues:
- Check logs:
storage/logs/laravel.log - Enable debug mode:
APP_DEBUG=truein.env - Run
composer run testto check for regressions - Review error messages carefully (they often suggest solutions)