From 3cce8d8445f988c7a1cd0c8e3e57a6e4b36824e9 Mon Sep 17 00:00:00 2001 From: Melvin Jones Repol Date: Sat, 21 Mar 2026 03:55:32 +0800 Subject: [PATCH] feat: add contribution guidelines and Sentry notices - Add Contribution Guidelines page and route (/legal/contribution-guidelines) - Add ContributeCard component and include it on the homepage; update CTA styles - Add contribution section to README and include page in sitemap - Mention Sentry in Privacy and Terms for error monitoring purposes --- README.md | 17 +++++ .../landing-page/ContributeCard.tsx | 44 ++++++++++++ app/components/layout/CTA.tsx | 7 +- app/legal/contribution-guidelines/page.tsx | 69 +++++++++++++++++++ app/legal/privacy/page.tsx | 9 +++ app/legal/terms/page.tsx | 12 +++- app/page.tsx | 2 + app/sitemaps/static.ts | 2 +- 8 files changed, 156 insertions(+), 6 deletions(-) create mode 100644 app/components/landing-page/ContributeCard.tsx create mode 100644 app/legal/contribution-guidelines/page.tsx diff --git a/README.md b/README.md index 44fe476..7e87fd3 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,20 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next The easiest way to deploy this Next.js app is to use the [Vercel Platform](https://vercel.com/new/clone?repository-url=https://github.com/mrepol742/devpulse) from the creators of Next.js. Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. + +## Contribution Guidelines + +Contributions to devpulse are welcome! Please follow these guidelines: + +1. Before modifying any existing design or logic that is already working or in use, **contact us first** to avoid conflicts. +2. You are welcome to contribute new features, bug fixes, or improvements. +3. Check the Issues tab (if available) before starting to avoid duplicate work. +4. Follow the existing code style and conventions. +5. Submit a pull request with a clear description of your changes and the problem it solves. + +> Pull requests that modify existing working features without prior discussion may not be merged. + +Help us keep the codebase ("DevPulse") clean, stable, and maintainable. + +## License +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. diff --git a/app/components/landing-page/ContributeCard.tsx b/app/components/landing-page/ContributeCard.tsx new file mode 100644 index 0000000..d61055f --- /dev/null +++ b/app/components/landing-page/ContributeCard.tsx @@ -0,0 +1,44 @@ +import Link from "next/link"; + +export default function ContributeCard() { + return ( +
+
+

+ Wanna contribute? +

+

+ We welcome contributions! You can help by adding new features, fixing + bugs, or improving the project. Just make sure to follow our + guidelines to avoid conflicts. +

+
+
+            {`## Contribution Guidelines
+
+Contributions to devpulse are welcome! Please follow these guidelines:
+
+1. Before modifying any existing design or logic that is already working or in use, **contact us first** to avoid conflicts.
+2. You are welcome to contribute new features, bug fixes, or improvements.
+3. Check the Issues tab (if available) before starting to avoid duplicate work.
+4. Follow the existing code style and conventions.
+5. Submit a pull request with a clear description of your changes and the problem it solves.
+
+> ⚠️ Pull requests that modify existing working features without prior discussion may not be merged.
+
+Help us keep the codebase ("DevPulse") clean, stable, and maintainable.`}
+          
+
+ + View Full Contribution Guidelines + +
+
+ ); +} diff --git a/app/components/layout/CTA.tsx b/app/components/layout/CTA.tsx index 233c21f..6d1c72d 100644 --- a/app/components/layout/CTA.tsx +++ b/app/components/layout/CTA.tsx @@ -2,8 +2,11 @@ import Link from "next/link"; export default function CTA() { return ( -
-
+
+

Ready to track your coding productivity?

diff --git a/app/legal/contribution-guidelines/page.tsx b/app/legal/contribution-guidelines/page.tsx new file mode 100644 index 0000000..aa8e332 --- /dev/null +++ b/app/legal/contribution-guidelines/page.tsx @@ -0,0 +1,69 @@ +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Contribution Guidelines - DevPulse", + description: + "Read our Contribution Guidelines to understand how you can contribute to DevPulse.", +}; + +export default function ContributionGuidelines() { + return ( +
+

+ Contribution Guidelines +

+ +

+ Thank you for considering contributing to DevPulse! To + help maintain the quality, stability, and integrity of our codebase + ("Hall of Codes"), please read and follow these guidelines. +

+ +

+ 1. Before Contributing +

+

+ Please reach out to us before modifying any existing design or logic + that is currently working or in active use. This ensures we avoid + conflicts and preserve the stability of DevPulse. +

+ +

+ 2. What You Can Contribute +

+

You are welcome to:

+
    +
  • Propose or contribute new features
  • +
  • Fix bugs or improve documentation
  • +
+

+ Before submitting a pull request (PR), check the Issues{" "} + tab if it exists to avoid duplicating work or causing conflicts. +

+ +

3. PR Review Policy

+

+ Any PR that modifies existing, working code without prior discussion may + not be merged. We reserve the right to reject contributions that + conflict with ongoing development or compromise the stability of the + DevPulse. +

+ +

+ 4. Protecting the Hall of Codes +

+

+ Our codebase represents the core of DevPulse. + Contributors are expected to respect coding standards, write clean, + maintainable code, and document changes clearly. Unauthorized + modifications, destructive changes, or attempts to bypass review + processes are not allowed and may result in removal of the contribution. +

+ +

+ By contributing, you agree to follow these guidelines to keep DevPulse + stable, reliable, and enjoyable for all users. +

+
+ ); +} diff --git a/app/legal/privacy/page.tsx b/app/legal/privacy/page.tsx index 55fda81..cb8afe7 100644 --- a/app/legal/privacy/page.tsx +++ b/app/legal/privacy/page.tsx @@ -71,6 +71,15 @@ export default function Privacy() { your experience.

+

e. Sentry

+

+ We use Sentry for error monitoring. While only error-related features + are enabled, Sentry may still collect certain information, including + personally identifiable information (PII), stack traces, and request + data. This information is used solely to help diagnose errors and + improve the reliability and performance of the application. +

+

2. How We Use Your Information

diff --git a/app/legal/terms/page.tsx b/app/legal/terms/page.tsx index f90d060..dbed151 100644 --- a/app/legal/terms/page.tsx +++ b/app/legal/terms/page.tsx @@ -52,6 +52,7 @@ export default function Terms() {
  • WakaTime API (coding statistics)
  • GitHub OAuth (authentication and profile data)
  • Google Search Console (analytics)
  • +
  • Sentry (error monitoring)
  • We are not responsible for the availability, accuracy, or practices of @@ -66,6 +67,11 @@ export default function Terms() { responsible for keeping your API key secure. We are not liable for any misuse resulting from unauthorized access to your key.

    +

    + When you visit us and an error occurs, we may use Sentry to capture + error details. This helps us improve the service, but we do not use this + data for any other purpose. +

    5. Data and Content

    @@ -87,9 +93,9 @@ export default function Terms() { 7. Limitation of Liability

    - DevPulse is provided "as is" without warranties of any kind. We are not - liable for any damages, including loss of data, arising from your use of - the service. + DevPulse is provided "as is" without warranties of any kind. + We are not liable for any damages, including loss of data, arising from + your use of the service.

    8. Termination

    diff --git a/app/page.tsx b/app/page.tsx index 5e58204..2504f06 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -7,6 +7,7 @@ import Contributors from "./components/landing-page/Contributors"; import LosserMembers from "./components/landing-page/LosserMembers"; import RecentLeaderboard from "./components/landing-page/RecentLeaderboard"; import TopLeaderboard from "./components/landing-page/TopLeaderbord"; +import ContributeCard from "./components/landing-page/ContributeCard"; export default async function Home() { const supabase = await createClient(); @@ -328,6 +329,7 @@ export default async function Home() { +
    ); diff --git a/app/sitemaps/static.ts b/app/sitemaps/static.ts index 434b8dc..e97c7a2 100644 --- a/app/sitemaps/static.ts +++ b/app/sitemaps/static.ts @@ -5,8 +5,8 @@ export default function sitemap(): MetadataRoute.Sitemap { { url: "https://devpulse-waka.vercel.app" }, { url: "https://devpulse-waka.vercel.app/login" }, { url: "https://devpulse-waka.vercel.app/signup" }, - { url: "https://devpulse-waka.vercel.app/legal" }, { url: "https://devpulse-waka.vercel.app/legal/terms" }, { url: "https://devpulse-waka.vercel.app/legal/privacy" }, + { url: "https://devpulse-waka.vercel.app/legal/contribution-guidelines" }, ]; }