Live Demo: SafeVoice on Netlify
Safevoice is a secure, AI-enhanced platform that lets individuals anonymously share harassment experiences, attach media (photos/audio), and access verified NGO resources. It integrates language tools to improve clarity and reach, and is designed to be beginner-friendly for open-source contributors.
- π Anonymous Story Management β Add, edit, and delete stories while preserving contributor anonymity.
- πΌ Media Attachments β Upload photos and audio recordings with stories.
- π Real-Time Translation β Translate stories into 8+ Indian languages using Google Gemini AI.
- βοΈ AI Grammar Correction β Real-time grammar fixes for submitted text.
- π NGO Resource Hub β Searchable database of support organizations and contact info.
- π Secure Auth & DB β Firebase Authentication + Firestore for secure, privacy-focused storage.
- β‘ Serverless API β Netlify Functions for backend endpoints with CORS handling.
- π‘οΈ Access Controls & Rate-Limiting β Basic protections to prevent abuse and preserve anonymity.
Frontend: React, TypeScript, Tailwind CSS
Backend: Firebase (Auth, Firestore, Cloud Functions), Netlify Functions
AI Integration: Google Gemini AI
Deployment: Netlify
Below is the folder and file structure of the SafeVoice project π
SafeVoice/
β
βββ .github/
β βββ ISSUE_TEMPLATE/ # GitHub issue templates for contributors
β
βββ netlify/
β βββ functions/ # Netlify serverless functions
β βββ correct-grammar.cjs # Function to correct grammar in stories
β βββ subscribe.cjs # Function to handle email subscriptions
β βββ translate.cjs # Function to translate stories or text
β
βββ public/
β βββ _redirects # Netlify redirects configuration
β
βββ src/
β βββ components/ # Reusable UI components
β β βββ Footer.tsx
β β βββ Navbar.tsx
β β βββ ScrollToTop.tsx
β β βββ ThemeToggle.tsx
β β
β βββ context/ # React context for global state management
β β βββ ThemeContext.tsx
β β
β βββ lib/ # External service configurations
β β βββ firebase.ts
β β βββ supabase.ts
β β
β βββ pages/ # Main app pages
β β βββ About.tsx
β β βββ AdminDashboard.tsx
β β βββ Auth.tsx
β β βββ ContactPage.tsx
β β βββ EditStory.tsx
β β βββ FAQs.tsx
β β βββ Home.tsx
β β βββ Privacypolicy.tsx
β β βββ Resources.tsx
β β βββ ShareStory.tsx
β β βββ Stories.tsx
β β βββ termsandconditions.tsx
β β
β βββ App.tsx # Root app component
β βββ index.css # Global styles
β βββ main.tsx # App entry point
β βββ vite-env.d.ts # Type definitions for Vite
β
βββ .env.example # Example environment variables
βββ .gitignore # Git ignore configuration
βββ CODE_OF_CONDUCT.md # Community behavior guidelines
βββ CONTRIBUTING.md # Contribution guide
βββ GirlScript-Summer-of-Code.png # Project/organization image
βββ LICENSE.md # License information
βββ PULL_REQUEST_TEMPLATE.md # Pull request format
βββ README.md # This file π
β
βββ eslint.config.js # ESLint configuration
βββ index.html # Main HTML entry file
βββ netlify.toml # Netlify configuration
βββ package-lock.json # NPM lock file
βββ package.json # Dependencies and scripts
βββ postcss.config.js # PostCSS setup for Tailwind
βββ server.js # Local server setup (optional)
βββ tailwind.config.js # TailwindCSS configuration
βββ tsconfig.app.json # TypeScript config for app
βββ tsconfig.json # Main TypeScript configuration
βββ tsconfig.node.json # Node TypeScript config
βββ vite.config.js # Vite configuration-
Clone the Repository
git clone https://github.com/Piyushydv08/SafeVoice.git cd SafeVoice -
Install Dependencies and CLI
npm install
npm install -g firebase-tools
npm install -g netlify-cli- Configure Environment Variables
- Create a .env file in the root directory.
- Place all keys according to .env.example
- Add Firebase & API keys.
- Start Development Server
netlify dev- Visit http://localhost:8888 in your browser.
- Sign up / Log in securely using Firebase Auth.
- Share an anonymous story with or without media.
- Translate and correct grammar instantly.
- Browse NGO resources for support.
Contributions are welcome! Follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature-name) - Make your changes
- Commit your changes (
git commit -m 'Add feature') - Push to the branch (
git push origin feature-name) - Create a Pull Request
Please read CONTRIBUTING.md and follow our Code of Conduct.
π This project is now an official part of GirlScript Summer of Code β GSSoC'25! πππ» We're thrilled to welcome contributors from all over India and beyond to collaborate, build, and grow Medicine-Reminder-App! Letβs make learning and career development smarter β together! ππ¨βπ»π©βπ»
π©βπ» GSSoC is one of Indiaβs largest 3-month-long open-source programs that encourages developers of all levels to contribute to real-world projects π while learning, collaborating, and growing together. π±
π With mentorship, community support, and collaborative coding, it's the perfect platform for developers to:
- β¨ Improve their skills
- π€ Contribute to impactful projects
- π Get recognized for their work
- π Receive certificates and swag!
π I canβt wait to welcome new contributors from GSSoC 2025 to this Medicine-Reminder-App project family! Let's build, learn, and grow together β one commit at a time. π₯π¨βπ»π©βπ»
- β Read documentation thoroughly before contributing
- β Follow code style and project structure
- β Write descriptive commit messages
- β Test your changes before submitting PR
- β Be respectful and collaborative
- β Ask questions if you're unsure about anything
- β Don't spam with multiple PRs for same issue
- β Don't copy code without understanding
- β Don't make unnecessary changes
- β Don't ignore code review feedback
- β Don't forget to update documentation when needed
For queries, feedback, or guidance regarding this project, you can contact the mentor assigned to the issue or admins:
- π© LinkedIn: Aditi-raj
- π© LinkedIn: Piyushydv08
- π¬ By commit/PR comments: Please tag the mentor in your commit or pull request discussion for direct feedback.
Original Repository: SafeVoice
This project is licensed under the MIT License - see the LICENSE file for details.
If you like this project, please give it a β star. Your support means a lot to us!
Feel free to contribute or suggest new features!π
