Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
Translation pending
Side hustles for working dads. Start with a free scorecard.
BusinessJavaScript · HTMLGitHub @gabedealmeidaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
This is my personal website hosted on a VPS. You should totally check it out 🏄♂️! In it, you'll see a mixture of CSS with the use of TailwindCSS, MongoDB, Webhooks, Pug for view templating, and more.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A landing page and quiz for Score My Side Hustle Idea, a free side hustle scorecard.Read the full README ↗A landing page and quiz for Score My Side Hustle Idea, a free side hustle scorecard.
Two ways in, and nothing else:
/test. Anyone who opens /test without having signed up is sent back to the home page form.https://gabrieldealmeida.com/?from=ig opens the home page for people who gave you their email in the Instagram DM. They see the whole page, and the signup form is replaced by a "Start the scorecard" button (every start button on the page does the same), so they are never asked again. https://gabrieldealmeida.com/test?from=ig still works and skips the home page entirely.Once in, they answer 17 short screens (progress is saved on their device), see their verdict and five scores, and get the full breakdown, a Save as PDF button, and the printable worksheet.
public/ the whole site (this is what gets served)
index.html home page
test/ the quiz page (the questions and scoring live in assets/js/scorecard.js)
privacy/ privacy page
downloads/ score-my-side-hustle-idea.pdf (built from pdf/)
assets/js/scorecard.js every question, score, and verdict rule
assets/js/quiz.js the quiz screens and results
assets/js/signup.js the email form (validation, "did you mean", call to the server)
assets/js/validate.js name and email rules, shared by browser and server
api/subscribe.js validates again, then adds the person to Flodesk
pdf/ source for the scorecard PDF (HTML, printed by Chrome)
content/ the scorecard's wording as plain text
server.mjs the web server (what Railway runs, and the local preview)
railway.json tells Railway how to start the site and check it is healthy
npm run dev -- --mock-flodesk
Open http://localhost:8080. --mock-flodesk pretends to be Flodesk, so you can run the whole flow with no account. Signups print in the terminal and go nowhere else.
npm test # validation, the Flodesk handoff, the scoring rules, and your brand rules
npm run build:pdf # rebuilds the PDF from pdf/score-my-side-hustle-idea.html (needs Chrome)
npm start # runs the site the way Railway does
npm run check # before going live: is the PDF there, is the Flodesk key set?
The site is a plain Node server with no dependencies, so Railway needs no build step. It runs npm start and checks /health before sending visitors to a new version, which means a broken deploy won't replace a working one.
Flodesk. In Flodesk, create an API key (Account settings, then Integrations, then API keys; the menu names can differ a little). Then create a segment called "Score My Side Hustle Idea" and a workflow that starts when someone joins that segment and sends your welcome email (copy below). Turn the workflow on.
Railway variables. Open your service, go to Variables, and add:
FLODESK_API_KEY (your Flodesk API key, keep it secret). This is the only one that must be set. People are added straight to your Flodesk audience.FLODESK_SEGMENT_ID (recommended). The id of the segment above. Every new signup is put on it, which is what starts the welcome workflow. To find it, run curl -u YOUR_KEY: https://api.flodesk.com/v1/segments in a terminal (note the colon after the key) and copy the id of your segment.FLODESK_WORKFLOW_ID (optional). If you would rather start a workflow directly than through a segment, add its id here. Most people only need the segment.See .env.example. The site listens on port 8080 (or on Railway's PORT, if it sets one).
Deploy. Railway deploys when master changes. Watch the deploy logs. A good start prints Site running on port ....
Your domain. If gabrieldealmeida.com is already attached to this Railway service, nothing changes. If not, add it under the service's Settings, then Networking.
Test it for real. Sign up on the live site with your own email, finish the quiz, and confirm you show up in Flodesk and get the welcome email. Then open /test?reset=1 and try the ?from=ig link.
If the form says "Signup is not connected yet," FLODESK_API_KEY is missing (or a segment or workflow id is set but isn't a plain id).
The keyword is SCORE. Set the trigger to "contains" so score, Score, and SCORE please all work. Put the same word in your bio and your pinned post.
Two links let people in without the home page form:
https://gabrieldealmeida.com/?from=ig is the one for people from Instagram. (/test?from=ig goes straight to the scorecard if you ever want to skip the home page.)https://gabrieldealmeida.com/?from=email is the one in the welcome email. It opens the home page with a "Your scorecard is ready" button instead of the signup form, so people see the whole page and are never asked for their email again. It works on any phone or computer. (/test?from=email goes straight to the scorecard if you ever want to skip the home page.)Neither carries a name or email, and the quiz removes the flag from the address bar after it loads.
email/welcome.html was made for the old email service and can't be pasted in. Use the same words, the same two links, and Flodesk's first-name personalization with "there" as the fallback.ManyChat has no direct Flodesk step, so it sends the email to this site, and the site adds the person to Flodesk. After the step that collects the email, add an External Request action:
https://gabrieldealmeida.com/api/subscribeContent-Type = application/json{"firstName": "{{first_name}}", "email": "{{email}}"}
Insert the first-name and email fields from ManyChat's field picker instead of typing the braces. Test it with your own email. If ManyChat's version of that action looks different, a Zapier or Make step from ManyChat to Flodesk does the same job.
?from=ig link, in case the email is slow.Only turn this flow on once the Flodesk welcome workflow is live and you've tested it with your own email, since the messages promise an email.
Subject: Your scorecard is ready
Hey {first name, fallback "there"},
Thanks for asking for Score My Side Hustle Idea. Here's the link whenever you're ready:
https://gabrieldealmeida.com/?from=email
It takes about 5 minutes. Pick one idea, answer honestly, and you'll get a verdict and a next step.
Most of my side hustles failed. The ones that worked already had buyers, a door already open, and fit around my job. This scorecard checks for exactly that.
Hit reply and tell me which idea you're scoring. I'd like to know.
Keep your job. Start a side hustle.
Gabriel
The quiz remembers things on the device (saved answers, and whether this person already got in). So once a browser has signed up or used the ManyChat link, it stops asking. To test again, open:
http://localhost:8080/test?reset=1
That clears what the browser remembers and sends you to the home page form. From there you can test the signup path, or open /test?from=ig to test the ManyChat side door.
/downloads/score-my-side-hustle-idea.pdf also opens for anyone with the link, and robots.txt keeps it out of search.scorecard.js and pdf/score-my-side-hustle-idea.html together, then run npm test and npm run build:pdf.PLAUSIBLE_ORIGIN in server.mjs, which also sets the security policy that lets it through; the script tag is in each page's head). It counts visits, outbound link clicks (Instagram, TikTok, YouTube) and PDF downloads on its own, and the site adds a few custom events with only plain labels (never a name, an email or an answer). Register these as custom event goals in the Plausible dashboard so they show up: Arrival, CTA Click, Section Seen, Signup, Quiz Opened, Quiz Started, Quiz Test, Quiz Finished, Result Action, Interest. The script is deliberately the version without the hash extension: this page's anchor links (#story, #get) would each be counted as a new page view. If the address of the Plausible service ever changes, update the tag in the four pages and PLAUSIBLE_ORIGIN.public/assets/js/mail.js), so scrapers do not collect it. With scripts off it shows .The live look is set by the data-* attributes on <html> on every page and by
public/assets/css/theme.css: Espresso & brass colours, Newsreader headlines, Source Sans 3 text and
the cut-out portrait. public/assets/js/theme.js does the small bits of scripting.
To try other fonts, palettes and corner styles without editing code, add ?looks=1 to any address,
for example http://localhost:8080/?looks=1. A Looks button appears (bottom left) and remembers
your picks in that browser only. ?looks=0 turns it off again. Visitors never see it. The panel's files
are public/assets/css/looks.css and public/assets/js/looks.js. To make a new look the live one,
copy its palette block from looks.css into theme.css and update the data-* attributes.
hello [at] gabrieldealmeida [dot] comInterest event, once per device.public/assets/css/site.css (Midnight, Graphite, Paper, Amber, Inter).master branch.