{"id":50429241,"url":"https://github.com/tejasnayak25/form-shell","last_synced_at":"2026-05-31T13:01:13.745Z","repository":{"id":348300865,"uuid":"1084225399","full_name":"tejasnayak25/form-shell","owner":"tejasnayak25","description":"Form Shell is a lightweight web app that wraps existing online forms with controlled access and interaction monitoring to prevent misuse, impersonation, and repeated submissions, improving the integrity of digital form workflows without modifying the original form.","archived":false,"fork":false,"pushed_at":"2026-03-31T15:30:49.000Z","size":1800,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T17:14:18.726Z","etag":null,"topics":["project"],"latest_commit_sha":null,"homepage":"https://form-shell.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tejasnayak25.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-27T11:53:55.000Z","updated_at":"2026-03-31T15:31:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tejasnayak25/form-shell","commit_stats":null,"previous_names":["tejasnayak25/form-shell"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tejasnayak25/form-shell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejasnayak25%2Fform-shell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejasnayak25%2Fform-shell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejasnayak25%2Fform-shell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejasnayak25%2Fform-shell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tejasnayak25","download_url":"https://codeload.github.com/tejasnayak25/form-shell/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tejasnayak25%2Fform-shell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33731998,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["project"],"created_at":"2026-05-31T13:01:13.078Z","updated_at":"2026-05-31T13:01:13.732Z","avatar_url":"https://github.com/tejasnayak25.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).\n\n## Getting Started\n\nFirst, run the development server:\n\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\nYou can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.\n\nThis project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.\n\n## Learn More\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!\n\n## Deploy on Vercel\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js.\n\nCheck out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.\n\n---\n\nCustom additions for this workspace (form-shell):\n\n- `lib/sanitize.ts` - utility to extract URL from pasted embed HTML or raw URL.\n- `app/api/createLink/route.ts` - API to create short id for a sanitized URL and store in Firestore at `rootCollection/useremail/forms/${doc}`.\n- `app/api/logEvent/route.ts` - API to accept anti-cheat events and append to `data/logs.json`.\n- `app/teacher/page.tsx` - teacher UI to paste embed code and create link.\n- `app/form/[id]/page.tsx` - student page which embeds the external URL and logs visibility/blur events.\n- `lib/firebaseClient.ts` - minimal firebase helper (placeholder). Update with your Firebase config.\n- `app/teacher/dashboard/page.tsx` - teacher dashboard to list and delete links created by the signed-in teacher.\n- `app/api/teacher/links` - API endpoints to list and delete teacher links (now uses Firestore instead of JSON file storage).\n\nHow to run locally\n\n1. Install dependencies:\n\n```powershell\nnpm install\n```\n\n2. (Optional) Add Firebase config if you want Google sign-in, and update `lib/firebaseClient.ts` or use your own.\n\n3. Run dev server:\n\n```powershell\nnpm run dev\n```\n\nNotes and limitations\n\n- This is a minimal prototype. The server-side code writes to JSON files under `data/` and is not safe for concurrent production use.\n- For production you should store links and logs in a proper database (Firestore, Postgres, etc.) and secure API endpoints with authentication.\n- The app uses a naive anti-cheat approach (visibility and blur events) which can be bypassed and may generate false positives. Use proctoring services for stronger protection.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftejasnayak25%2Fform-shell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftejasnayak25%2Fform-shell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftejasnayak25%2Fform-shell/lists"}