{"id":43551984,"url":"https://github.com/luabagg/ghenortrs","last_synced_at":"2026-02-03T19:34:36.192Z","repository":{"id":324771851,"uuid":"1036355238","full_name":"luabagg/ghenortrs","owner":"luabagg","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-17T20:27:04.000Z","size":765,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-17T20:29:31.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luabagg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-08-12T00:39:57.000Z","updated_at":"2025-11-17T20:27:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/luabagg/ghenortrs","commit_stats":null,"previous_names":["luabagg/ghenortrs"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/luabagg/ghenortrs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luabagg%2Fghenortrs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luabagg%2Fghenortrs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luabagg%2Fghenortrs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luabagg%2Fghenortrs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luabagg","download_url":"https://codeload.github.com/luabagg/ghenortrs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luabagg%2Fghenortrs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29054779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:43:47.601Z","status":"ssl_error","status_checked_at":"2026-02-03T15:43:46.709Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-02-03T19:34:36.125Z","updated_at":"2026-02-03T19:34:36.185Z","avatar_url":"https://github.com/luabagg.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GhenoRTRS Homepage\n\nModern, high-performance homepage for GhenoRTRS - Specialists in downhill bike parts from South Brazil.\n\n## 🎨 Tech Stack\n\n- **React** - UI framework\n- **Vite** - Build tool \u0026 dev server\n- **Tailwind CSS** - Styling\n- **Framer Motion** - Animations\n- **Heroicons** - Icons\n- **Express** - API server for B2B form\n- **Nodemailer** - Email handling\n\n## 🚀 Quick Start\n\n### 1. Install Dependencies\n\n```bash\nnpm install\n```\n\n### 2. Configure Environment Variables\n\nCreate a `.env` file in the root directory:\n\n```bash\ncp .env.example .env\n```\n\nEdit `.env` and add your email credentials:\n\n```env\nEMAIL_USER=your-email@gmail.com\nEMAIL_PASS=your-app-password\nPORT=3001\n```\n\n**For Gmail:**\n1. Go to Google Account \u003e Security \u003e 2-Step Verification\n2. Create an \"App Password\" for Mail\n3. Use that password in `EMAIL_PASS`\n\n### 3. Run Development Servers\n\n```bash\n# Run both frontend and backend\nnpm run dev:all\n\n# Or run separately:\nnpm run dev      # Frontend only (http://localhost:5173)\nnpm run server   # Backend API only (http://localhost:3001)\n```\n\n### 4. Build for Production\n\n```bash\nnpm run build\nnpm run preview\n```\n\n## 📁 Project Structure\n\n```\nghenortrs/\n├── src/\n│   ├── components/\n│   │   ├── Navbar.jsx       # Navigation with mobile menu\n│   │   └── Footer.jsx       # Footer with contact info\n│   ├── sections/\n│   │   ├── Hero.jsx         # Hero section with video background\n│   │   ├── About.jsx        # About section with features\n│   │   ├── Products.jsx     # Product showcase\n│   │   ├── B2BContact.jsx   # B2B contact form\n│   │   └── Instagram.jsx    # Instagram feed section\n│   ├── App.jsx              # Main app component\n│   ├── index.css            # Tailwind + custom styles\n│   └── main.jsx             # Entry point\n├── public/\n│   ├── images/              # Product images (TODO: add your images)\n│   │   ├── instagram/       # Instagram feed images\n│   │   └── ...\n│   └── videos/              # Video files (TODO: add your videos)\n│       ├── hero-downhill.mp4\n│       └── ...\n├── server.js                # Express API server\n├── .env                     # Environment variables (create this)\n└── tailwind.config.js       # Tailwind config with brand colors\n```\n\n## 🎥 Adding Your Assets\n\n### Logo\n\nReplace the logo placeholder in:\n- `src/components/Navbar.jsx` (line ~24)\n- `src/components/Footer.jsx` (line ~96)\n\n**Option 1: Direct Image**\n```jsx\n\u003cimg src=\"/logo.png\" alt=\"GhenoRTRS\" className=\"w-12 h-12\" /\u003e\n```\n\n**Option 2: AWS S3 / Cloud Storage**\n```jsx\n\u003cimg\n  src=\"https://your-bucket.s3.amazonaws.com/logo.png\"\n  alt=\"GhenoRTRS\"\n  className=\"w-12 h-12\"\n/\u003e\n```\n\n### Hero Video\n\nAdd your downhill video to `/public/videos/hero-downhill.mp4`\n\nThen uncomment in `src/sections/Hero.jsx` (line ~12):\n```jsx\n\u003cvideo autoPlay loop muted playsInline className=\"video-background\"\u003e\n  \u003csource src=\"/videos/hero-downhill.mp4\" type=\"video/mp4\" /\u003e\n\u003c/video\u003e\n```\n\n### Product Images\n\nAdd images to `/public/images/` and update in `src/sections/Products.jsx`:\n```jsx\nimage: '/images/brakes.jpg'  // Replace placeholder\n```\n\n### Instagram Feed\n\n**Option 1: Manual (Current)**\n- Add images to `/public/images/instagram/`\n- Update `src/sections/Instagram.jsx`\n\n**Option 2: Instagram API (Future)**\n- Integrate Instagram Graph API\n- Fetch posts dynamically\n\n## 🎨 Brand Colors\n\nConfigured in `tailwind.config.js`:\n\n```js\ncolors: {\n  brand: {\n    red: '#e81414',    // Primary brand red\n    black: '#000000',  // Background\n  },\n}\n```\n\nUsage:\n```jsx\n\u003cdiv className=\"bg-brand-red text-white\"\u003e...\u003c/div\u003e\n\u003cbutton className=\"btn-primary\"\u003e...\u003c/button\u003e  // Pre-styled button\n```\n\n## 📧 Email Configuration\n\nThe B2B contact form sends emails via Nodemailer. Configure in `server.js`:\n\n### Current Setup (Gmail)\n\nWorks out of the box with Gmail. Just set `.env` variables.\n\n### Using Another Email Service\n\nEdit `server.js` (line ~15):\n\n```js\nconst transporter = nodemailer.createTransport({\n  host: 'smtp.yourdomain.com',\n  port: 587,\n  secure: false,\n  auth: {\n    user: process.env.EMAIL_USER,\n    pass: process.env.EMAIL_PASS,\n  },\n});\n```\n\n**Popular Services:**\n- Gmail: `service: 'gmail'` (default)\n- Outlook: `service: 'hotmail'`\n- Custom SMTP: Use `host`, `port`, `secure`\n\n## 🔧 Customization\n\n### Update Contact Info\n\nEdit `src/components/Footer.jsx`:\n- Email: contato@ghenortrs.com.br\n- Phone: Add your actual phone number (line ~149)\n- WhatsApp: Update link (line ~121)\n\n### Add More Sections\n\nCreate new section in `src/sections/`:\n\n```jsx\n// src/sections/Testimonials.jsx\nexport default function Testimonials() {\n  return \u003csection\u003e...\u003c/section\u003e\n}\n```\n\nImport in `src/App.jsx`:\n```jsx\nimport Testimonials from './sections/Testimonials';\n\n// Add to App\n\u003cTestimonials /\u003e\n```\n\n### Change Animations\n\nAll animations use Framer Motion. Example:\n\n```jsx\n\u003cmotion.div\n  initial={{ opacity: 0, y: 20 }}\n  whileInView={{ opacity: 1, y: 0 }}\n  transition={{ duration: 0.6 }}\n\u003e\n  Content here\n\u003c/motion.div\u003e\n```\n\n## 📦 Deployment\n\n### Option 1: Vercel (Recommended)\n\n1. Push to GitHub\n2. Import project on [Vercel](https://vercel.com)\n3. Add environment variables in settings\n4. Deploy!\n\n**Note:** For the API to work, you'll need to deploy the backend separately or use Vercel Serverless Functions.\n\n### Option 2: Netlify\n\nSimilar to Vercel. Backend needs separate deployment.\n\n### Option 3: VPS/Dedicated Server\n\n```bash\n# Build frontend\nnpm run build\n\n# Serve with nginx/apache\n# Run backend with PM2:\npm2 start server.js --name ghenortrs-api\npm2 save\n```\n\n## 🌐 Domain Setup\n\nPoint your domain `ghenortrs.com.br` to your hosting:\n\n1. **Vercel/Netlify:** Follow their DNS instructions\n2. **VPS:** Point A record to your server IP\n\n```\nType    Name    Value\nA       @       YOUR_SERVER_IP\nA       www     YOUR_SERVER_IP\n```\n\n## 🛠️ B2B Workflow Recommendation\n\nWhen B2B form is submitted:\n\n1. ✅ Email sent to `contato@ghenortrs.com.br`\n2. ✅ Auto-reply sent to customer\n3. 📋 You review lead (CNPJ, volume, etc.)\n4. 💰 Create custom quote in Bling (Price Table 2)\n5. 📧 Send proposal via email\n6. ✅ Convert to customer in Bling\n7. 📄 Generate NFe from Bling\n\n### Bling Integration (Future Enhancement)\n\nConsider adding:\n- Direct integration with Bling API\n- Auto-create B2B leads in Bling\n- Sync product catalog from Bling\n\n## 📝 TODO / Future Enhancements\n\n- [ ] Add logo and brand assets\n- [ ] Upload hero video\n- [ ] Add product images\n- [ ] Connect Instagram feed via API\n- [ ] Add blog section for SEO\n- [ ] Integrate Google Analytics\n- [ ] Add Meta Pixel for ads\n- [ ] Create B2B product catalog PDF\n- [ ] Bling API integration\n- [ ] Multi-language support (EN/PT)\n- [ ] Add testimonials section\n- [ ] Implement product filters\n\n## 🐛 Troubleshooting\n\n### Tailwind styles not working\n\n```bash\n# Clear cache and rebuild\nrm -rf node_modules/.vite\nnpm run dev\n```\n\n### Email not sending\n\n- Check `.env` file exists with correct credentials\n- For Gmail: ensure 2FA is enabled and using App Password\n- Check server logs: `npm run server`\n\n### Build errors\n\n```bash\n# Clear and reinstall\nrm -rf node_modules package-lock.json\nnpm install\nnpm run build\n```\n\n## 📄 License\n\nProprietary - GhenoRTRS © 2025\n\n## 📞 Support\n\nFor questions or issues:\n- Email: contato@ghenortrs.com.br\n- Instagram: [@gheno_rtrs](https://www.instagram.com/gheno_rtrs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluabagg%2Fghenortrs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluabagg%2Fghenortrs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluabagg%2Fghenortrs/lists"}