Thank you for your interest in contributing to TamilNadu.tech Communities! We aim to make contributing as easy and transparent as possible. Whether you're adding your community's events, fixing bugs, or improving documentation - every contribution matters!
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/Communities.git cd Communities - Create a new branch:
git checkout -b feature/your-feature-name
Adding your community events is the most common and easiest way to contribute! Here's a detailed guide:
Navigate to src/data/events.json in your forked repository.
Add your event to the JSON array using this template:
{
"eventName": "Your Event Name",
"eventDescription": "Brief description of the event (max 200 characters)",
"eventDate": "2024-02-20",
"eventTime": "14:30",
"eventEndDate": "2024-02-21",
"eventEndTime": "17:30",
"eventVenue": "Full venue address",
"eventLink": "https://registration-link.com",
"location": "City Name",
"communityName": "Your Community Name",
"communityLogo": "https://url-to-your-logo.svg",
"alert": {
// Optional: Add alerts for important updates
"message": "Important notice about the event",
"type": "postponed" // Optional: "postponed", "venue-change", "cancelled", or "general"
}
}Field Requirements:
eventDate: YYYY-MM-DD formateventTime: 24-hour format HH:MMeventEndDate: Optional. Use for multi-day events (YYYY-MM-DD). Must be same as or later thaneventDate.eventEndTime: Optional. 24-hour format HH:MMcommunityLogo: Use imgbb to host images or add hostname tonext.config.ts
If your event runs for 2 or more days, add eventEndDate (and optionally eventEndTime).
{
"eventName": "Open Source Summit Chennai",
"eventDescription": "Two-day summit with talks, workshops, and community networking.",
"eventDate": "2026-04-12",
"eventTime": "09:00",
"eventEndDate": "2026-04-13",
"eventEndTime": "17:00",
"eventVenue": "Chennai Trade Centre",
"eventLink": "https://example.com/register",
"location": "Chennai",
"communityName": "Open Source Chennai",
"communityLogo": "https://example.com/logo.png"
}For single-day events, keep using eventDate and eventTime only.
If your event has been postponed, cancelled, or has important updates (venue changes, time changes, etc.), you can add an alert field to notify attendees directly on the event card:
Alert Types:
"postponed"- Event has been rescheduled to a different date"venue-change"- Event venue has changed"cancelled"- Event has been cancelled"general"- General important notice (or omit type for default)
Example - Postponed Event:
{
"eventName": "Community Meetup",
"eventDate": "2025-12-06",
"eventTime": "09:30",
...
"alert": {
"message": "Due to cyclone alert, event postponed from Nov 29 to Dec 6. Same venue. We apologise for any inconveniences.",
"type": "postponed"
}
}Example - Venue Change:
{
"eventName": "Tech Workshop",
"eventDate": "2025-12-15",
"eventVenue": "New Venue Address",
...
"alert": {
"message": "Please note: The event venue has been changed. New location: New Venue Address",
"type": "venue-change"
}
}Example - General Notice:
{
"eventName": "Hackathon",
...
"alert": {
"message": "Registration closes 2 days before the event. Limited seats available!",
"type": "general"
}
}Note: The
alertfield is completely optional. Events without alerts will display normally.
Ensure:
- All dates are in the future
- All fields are filled out correctly
- The event is taking place in Tamil Nadu
- URLs are valid and accessible
- Your community logo is a high-quality image (preferably SVG)
- If using
alert, themessagefield is provided and clearly communicates the update
-
Commit your changes using Conventional Commits:
git add src/data/events.json git commit -m "feat: add [Your Event Name] on [Date]" git push origin feature/your-feature-nameCommit Message Guidelines:
- feat: New feature (e.g.,
feat: add React Chennai meetup on Dec 15) - fix: Bug fix (e.g.,
fix: correct event date format) - docs: Documentation (e.g.,
docs: update setup instructions) - refactor: Code restructuring
- test: Tests
- chore: Maintenance (e.g.,
chore: update dependencies)
- feat: New feature (e.g.,
-
Create a Pull Request with:
- Title: Follow the conventional commit format (e.g.,
feat: add [Your Event Name]) - Description: Brief details about the event and why it was added
- Title: Follow the conventional commit format (e.g.,
- Check existing issues first
- Create a new issue with:
- Clear title
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
Have ideas to make the platform better? Create an issue with:
- Clear title
- Detailed description
- Use cases
- Potential implementation details
-
Copy
.env.exampleto.env:cp .env.example .env
-
(Optional) Generate VAPID keys for push notifications:
Note: Push notifications are disabled in non-production environments. VAPID keys are only required when
NODE_ENV=production.npx web-push generate-vapid-keys
-
Update
.envwith:NEXT_PUBLIC_VAPID_PUBLIC_KEY- (Optional) Public VAPID keyVAPID_PUBLIC_KEY- (Optional) Server-side public keyVAPID_PRIVATE_KEY- (Optional) Server-side private keyGITHUB_TOKEN- (Optional) For subscription managementUMAMI_ANALYTICS_ID- (Optional) Analytics
- Use TypeScript for all code
- Follow existing code style
- Use conventional commits
- Add comments for complex logic
- Update docs when needed
- Test locally before PR
- Be kind and respectful
- Help others
- Share knowledge
- Participate in discussions
By contributing, you agree that your contributions will be licensed under the GPL 3.0 License.