Prerequisites
Before you begin development, ensure you have the following installed:Node.js 18.0+
Node.js 18.0+
Git
Git
Ensure Git is installed for version control:
Development Installation
1. Fork and Clone
1
Fork the repository
Fork the Sora Digital Photo Frame repository on GitHub.
2
Clone your fork
3
Add upstream remote
2. Install Dependencies
Install all project dependencies:3. Environment Configuration
Development environment
Development environment
- Copy the example environment file:
- Configure for development:
Test photos directory
Test photos directory
Create a test photos directory for development:Add some test images to verify your setup works correctly.
Development Workflow
Running in Development Mode
1
Start the development server
2
Access the application
Open your browser to:
- Main app: http://localhost:3000
- Admin panel: http://localhost:3000/admin
3
Test photo upload
Navigate to the admin panel and test uploading photos to ensure everything works.
Available Scripts
Development Guidelines
Code Style
JavaScript/Node.js
JavaScript/Node.js
- Use ES6+ features and async/await
- Follow ESLint configuration
- Use meaningful variable and function names
- Add JSDoc comments for functions
CSS/Styling
CSS/Styling
- Follow Material Design principles
- Use CSS custom properties for theming
- Mobile-first responsive design
- BEM naming convention for CSS classes
Git Workflow
1
Create feature branch
2
Make your changes
Develop your feature with frequent commits:
3
Keep updated
Regularly sync with upstream:
4
Push and create PR
Testing
Running Tests
Writing Tests
Create tests in thetests/ directory:
Debugging
Server-side debugging
Server-side debugging
Use Node.js debugger or VS Code:
Client-side debugging
Client-side debugging
- Use browser Developer Tools
- Check console for JavaScript errors
- Use Network tab to inspect API calls
- Test responsive design in device emulation
Common Development Tasks
Add API Endpoint
Create new routes in
src/routes/ and register them in the main server file.Modify UI
Update HTML templates and CSS in the
public/ directory.Add Configuration
Add new environment variables to
.env.example and document them.Optimize Images
Modify image processing utilities in
src/utils/imageProcessor.js.Performance Considerations
- Image Processing: Use efficient libraries like Sharp for image manipulation
- Caching: Implement proper caching strategies for processed images
- Memory Usage: Monitor memory usage with large image collections
- Network: Optimize image delivery with appropriate compression
Need Help?
Stuck on something? Check the contributing guidelines or open an issue on GitHub for help from the community.

