All your EIPs, ERCs, CAIPs, and RIPs in one place.
EIP.directory is an open-source web application that aggregates and presents Ethereum-related improvement proposals in a clean, searchable interface. Visit at eip.directory.
-
Comprehensive Coverage: Browse all major Ethereum proposal types:
- EIPs - Ethereum Improvement Proposals
- ERCs - Ethereum Requests for Comments
- CAIPs - Chain Agnostic Improvement Proposals
- RIPs - Rollup Improvement Proposals
-
Enhanced Content: Important proposals include a "Why is it important?" section explaining their significance in simple terms
-
Modern Interface: Clean, responsive design with dark/light mode support
-
Smart Search: Fast, intuitive search across all proposals
-
Real-time Updates: Automated synchronization with upstream repositories
- Next.js 14 - React framework with App Router
- TypeScript - Type safety
- Tailwind CSS - Styling
- Radix UI - Component primitives
- Zustand - State management
- React Markdown - Markdown rendering with syntax highlighting
- Python - Proposal fetching and processing
- Supabase - Database and authentication
- GitHub API - Source of truth for proposals
- Node.js 18+ and npm
- Python 3.8+
- Supabase account (for database)
-
Clone the repository
git clone https://github.com/velvet-shark/eips-with-style.git cd eips-with-style -
Install frontend dependencies
npm install
-
Set up Python environment
cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Configure environment variables
# Frontend (.env.local) NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key NEXT_PUBLIC_SITE_URL=http://localhost:3000 # Backend (.env) SUPABASE_URL=your_supabase_url SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
-
Run the development server
npm run dev
The application will be available at http://localhost:3000.
To fetch and update proposals from GitHub:
cd backend
source venv/bin/activate
python proposal_updater.py├── app/ # Next.js app directory
│ ├── [proposalType]/ # Dynamic routes for proposal types
│ ├── api/ # API routes
│ └── auth/ # Authentication pages
├── backend/ # Python proposal updater
│ ├── proposal_updater.py # Main update script
│ └── downloaded_proposals/ # Cached proposal files
├── components/ # React components
├── config/ # Configuration files
├── contexts/ # React contexts
├── database/ # Database schema
├── hooks/ # Custom React hooks
├── lib/ # Utility libraries
├── public/ # Static assets
└── utils/ # Helper functions
Contributions are very welcome! Here's how you can help:
- Report bugs - Found something broken? Open an issue
- Suggest features - Have ideas for improvements? We'd love to hear them
- Improve content - Help write "Why is it important?" sections for proposals
- Fix issues - Browse open issues and submit pull requests
- Improve documentation - Help make our docs clearer
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and ensure code quality
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- We use TypeScript for type safety
- Follow existing code patterns and conventions
- Use Prettier for code formatting
- Write meaningful commit messages
- Website: eip.directory
- GitHub Issues: Report bugs or request features
- Twitter: @velvet_shark
Built with ❤️ for the Ethereum community