Thank you for your interest in contributing to the Eraser.io Clone! This project is a collaborative effort to build a modern, feature-rich clone of Eraser.io using cutting-edge web technologies. We welcome contributions from developers of all skill levels.
- Getting Started
- Development Setup
- Project Structure
- Contributing Workflow
- Code Guidelines
- Submitting Issues
- Submitting Pull Requests
- Testing
- Code of Conduct
This project is built with:
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS - Utility-first CSS framework
- Shadcn/UI - Beautiful and accessible React components
- Convex - Real-time database and backend
- Kinde Auth - Authentication service
- EditorJS - Block-style rich text editor
- Excalidraw - Collaborative whiteboard canvas
- Node.js 18.0 or higher
- npm, yarn, pnpm, or bun package manager
- Git
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/your-username/eraser_clone.git cd eraser_clone -
Install dependencies:
npm install # or yarn install # or pnpm install # or bun install
-
Set up environment variables:
- Copy
.env.exampleto.env.local(if available) - Configure your Convex and Kinde Auth credentials
- Refer to the README.md for specific setup instructions
- Copy
-
Start the development server:
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open your browser and navigate to http://localhost:3000
eraser_clone/
├── app/ # Next.js App Router pages and layouts
│ ├── (routes)/ # Route groups
│ ├── _components/ # Shared components
│ └── _context/ # React contexts
├── components/ # Reusable UI components
│ └── ui/ # Shadcn/UI components
├── convex/ # Convex database functions
├── lib/ # Utility functions
├── public/ # Static assets
├── CONTRIBUTING.md # This file
├── LICENSE # MIT License
├── README.md # Project documentation
└── package.json # Project dependencies and scripts
- Check existing issues to see if your feature/bug is already being worked on
- Create a new issue if one doesn't exist, describing your proposed changes
- Fork the repository and create a new branch from
main - Make your changes following our coding guidelines
- Test your changes thoroughly
- Commit your changes with clear, descriptive messages
- Push to your fork and create a pull request
- Respond to feedback during the review process
Use descriptive branch names:
feature/add-user-dashboardfix/authentication-bugdocs/update-readmerefactor/optimize-file-management
- TypeScript: Write type-safe code with proper interfaces and types
- ESLint: Follow the project's ESLint configuration
- Prettier: Format code consistently (will be configured)
- Naming: Use camelCase for variables/functions, PascalCase for components
- Components: Create functional components with TypeScript interfaces
// Example component structure
interface ComponentProps {
title: string;
optional?: boolean;
}
const MyComponent: React.FC<ComponentProps> = ({ title, optional = false }) => {
return (
<div className="p-4 rounded-lg border">
<h2 className="text-lg font-semibold">{title}</h2>
{optional && <p>Optional content</p>}
</div>
);
};
export default MyComponent;- Use Tailwind CSS classes for styling
- Follow the existing color scheme and spacing patterns
- Use Shadcn/UI components when possible
- Maintain responsive design principles
- Keep accessibility in mind (use proper ARIA labels, semantic HTML)
Write clear, descriptive commit messages:
feat: add file sharing functionality
fix: resolve authentication redirect issue
docs: update contributing guidelines
style: format code with prettier
refactor: optimize database queries
test: add unit tests for file operations
When submitting an issue, please:
- Use a clear, descriptive title
- Provide detailed reproduction steps for bugs
- Include screenshots or videos when relevant
- Specify your environment (browser, OS, Node.js version)
- Check for existing issues to avoid duplicates
- Bug Report: For reporting bugs and errors
- Feature Request: For suggesting new features
- Documentation: For documentation improvements
- Question: For general questions about the project
- Code follows the project's style guidelines
- All tests pass
- Code is properly documented
- Commit messages are clear and descriptive
- Branch is up to date with the main branch
- Link to related issues in the PR description
- Provide a clear description of what the PR accomplishes
- Include screenshots for UI changes
- List any breaking changes
- Update documentation if necessary
- All PRs require at least one review
- Address reviewer feedback promptly
- Keep discussions constructive and respectful
- Be open to suggestions and alternative approaches
Currently, this project uses:
- Next.js built-in linting with ESLint
- Manual testing for UI components
- Integration testing with the Convex backend
# Lint code
npm run lint
# Build the project
npm run build
# Start production server
npm startWhen adding new features, consider:
- Writing unit tests for utility functions
- Testing component behavior
- Ensuring accessibility compliance
- Testing different screen sizes and devices
This project follows a Code of Conduct to ensure a welcoming environment for all contributors. By participating, you agree to:
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different viewpoints and experiences
- Show empathy towards other contributors
If you need help or have questions:
- Check existing issues and discussions
- Read the documentation in README.md
- Create a new issue with the "question" label
- Join community discussions (if applicable)
Contributors will be recognized in:
- GitHub contributors list
- Project documentation
- Release notes for significant contributions
By contributing to this project, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to the Eraser.io Clone! Together, we're building something extraordinary. 🚀