❌

Reading view

I built a social platform in about a month to learn more about React and Supabase

hey guys,

I built this website over the last month to learn more about making website and handling real time data, it uses React, Next.js and Supabase

You can try it out from here: https://project-s-nine-kappa.vercel.app

(Please just click the "Explore Demo" button on the login screen so you don't have to create an account!)

Source code is here: https://github.com/zzz-nv/s-social

Would love to hear any feedback!

submitted by /u/darkpickle_ to r/reactjs
[link] [comments]
  •  

Released Commentify 4.4

Commentify 4.4 is out, with over 18k installs, MIT, Laravel Livewire comments for any Eloquent model. Tailwind or Bootstrap, nested replies, markdown, likes, reports, guests, optional Filament admin. PHP 8.3+, Laravel 12 or 13, Livewire 4.

What changed:

  • Filament: a modal used to reuse the first record's comments component. The Livewire thread is now keyed to the record and the thread name, so the modal shows the record you opened and two threads on one model do not collide. CommentsEntry::make() drops that thread on an edit or relation manager form.
  • Notifications: with the flag on, a reply notifies the parent author. A top-level comment notifies the commentable's user when that relation exists. The notification is queued and waits until the transaction commits. The mail button is included only when the comment URL is on your app.url host, so a request referer cannot send the recipient off your app.
  • Minimum PHP is now 8.3.

Install guide:

https://docs.commentify.pro/installation

submitted by /u/usamamuneer to r/PHP
[link] [comments]
  •  

Nadie le pone el cascabel al gato, TIGO sigue aumentando los precios

Nadie le pone el cascabel al gato, TIGO sigue aumentando los precios

Voy a tomarlo con calma, pero ya están pasados.

Tigo hace unos meses lanzó el paquete de 30 días a $22.00, ahora lo aumentaron a $24.00, $2 más.

TIGO, LOS ODIO, maldito al la gente de la ASEP por permitir que se fuera Digicel y la fusión de Claro y +Móvil, se acabó la competencia, cada cuantos meses un nuevo aumento y la señal sigue siendo pesima, esto no puede seguir pasando.

submitted by /u/MorningDazzling6948 to r/Panama
[link] [comments]
  •  

How do you track SaaS trials and pilot conversions in your CRM?

I handle sales at a small B2B software company, and we're trying to get a better handle on our pilot process before it gets too messy. We sell reporting software, and prospects usually want to test it with their own data before committing. The tricky part is that it's not really a self-serve trial. Someone from our team often has to help with the import, get the first report working, and follow up when they run into issues.

We're tracking deals in our CRM, but it's hard to get a clear picture of how much time we're spending on pilots and which ones actually turn into customers. Some leads move through setup quickly, others go quiet halfway through, and sometimes we only realize how much work went into a pilot when we're looking back at the deal.

I'm considering setting up a more structured process to track each pilot's stage, setup tasks, blockers, and outcome. We might also start charging for pilots that require a lot of hands-on work, but I'd want to understand our conversion rates first.

For those running B2B sales through a CRM, how do you track pilots from the initial request through setup and conversion without creating a ton of admin?

submitted by /u/InzaneVercetti to r/CRM
[link] [comments]
  •  

Is it still worth selling websites in 2026/27?

Is it worth learning how to build WordPress sites and selling them to clients, given the current AI boom? I’m not a big fan of AI-generated websites, but does the market actually care?

submitted by /u/Heavy_Ear_2390 to r/Wordpress
[link] [comments]
  •  

Am I An Idiot

I have read for years that it is just not worth it to host your own email. I have understood this. I have believed this.

Recent changes in Google's policy have me considering moving away Gmail and even Google Workspace. I already only use it for the email feature - I use Immich, Nextcloud, Vaultwarden, etc. I use a combination of self hosted in the home and on self managed cloud servers (can't really have Uptime Kuma on the home network to tell me if the home network based services go down, for example).

I researched other email providers. I didn't like what I saw or the prices you would get per user.

So I decided I would just try and see if I could make it work to host it myself. I found Stalwart and got that going on a cloud server. It has a setting to link right into the Cloudflare API and add all the records it needed. It was way easier than I expected. The IP I got for the server was clean on spamhaus and everywhere I checked. Once I got everything set up, I sent some emails to test. They all arrived. They passed SPF,DKIM,DMARC. Stalwart has cardDAV/calDAV. Scored 10/10 on mail-tester. Shows up even to my Outlook inbox for my work email (now that was filtered to spam but so is everything that isn't whitelisted by IT).

Everything is hardened and access is locked down behind cloudflare. I have bichon running to back up everything from Gmail/Workspace now. I did this all on a separate subdomain for testing.

Am I an idiot? What am I missing that is going to blindside me on this? Is the other shoe going to drop? Why should I not just full send it and move over to my shiny new selfhosted email provider?

Talk me down off this cliff here because I am already in my swimsuit and the water down there looks inviting.

submitted by /u/BooleanTriplets to r/selfhosted
[link] [comments]
  •  

Google map autocomplete cost issue

Hi everyone!

I'm currently implementing Google Places Autocomplete using the new Autocomplete Data API with React and @vis.gl/react-google-maps.

The implementation works, but I'm concerned about Google Maps API pricing, especially during development. I managed to hit my API usage limit within just two days, and I'm trying to understand whether my implementation is making unnecessary requests or whether this is expected behavior.

I'd appreciate some clarification from anyone who has experience with the Google Places API.

  1. My current implementation
    I'm using a 500ms debounce to avoid sending a request on every keystroke.

SearchBox component

```
import { MagnifyingGlassIcon, MapPinIcon } from '@phosphor-icons/react'
import { useState } from 'react'
import { useDebounce } from '@/hooks/useDebounce'
import { useAnimatedPlaceholder } from '@/features/search/hooks/useAnimatedPlaceholder'
import { useMapsLibrary } from '@vis.gl/react-google-maps'
import { useAutocompleteSuggestions } from '@/hooks/useAutoCompleteSuggestions'
import { useNavigate } from 'react-router-dom'

import styles from './styles.module.css'

const SearchBox = () => {
const [searchQuery, setSearchQuery] = useState('')
const debouncedSearchQuery = useDebounce(searchQuery, 500)
const inputRef = useAnimatedPlaceholder()

return (
<>
<div className={styles.searchBox}>
<MagnifyingGlassIcon size={24} />
<input placeholder="Search for " ref={inputRef} value={searchQuery} onChange={e => setSearchQuery(e.currentTarget.value)} />
</div>
<SearchSuggestions debouncedSearchQuery={debouncedSearchQuery} />
</>

)
}

export default SearchBox

type SearchSuggestions = {
debouncedSearchQuery: string
}

function SearchSuggestions({ debouncedSearchQuery }: SearchSuggestions) {
const navigate = useNavigate()
const places = useMapsLibrary('places');
const { suggestions, resetSession } = useAutocompleteSuggestions(debouncedSearchQuery, {
includedPrimaryTypes: ["locality"]
})

const handleSuggestionClick = async (suggestion: google.maps.places.AutocompleteSuggestion) => {
if (!places || !suggestion.placePrediction) return

const place = suggestion.placePrediction.toPlace()
await place.fetchFields({
fields: [
"addressComponents"
]
})
// calling fetchFields invalidates the session-token, so we now have to call
// resetSession() so a new one gets created for further search
resetSession()

const city = place.addressComponents && place.addressComponents[0].longText
const placeId = suggestion.placePrediction.placeId
if (city && placeId) return navigate(`${city}/${placeId}`)
}

return !!suggestions.length && (
<div className={styles.optionBox}>
{
suggestions.map(suggestion => <button key={suggestion.placePrediction?.placeId} className={styles.option} onClick={() => handleSuggestionClick(suggestion)}>
<div className={styles.iconWrapper}>
<MapPinIcon weight="fill" size={20} />
</div>
<span className={styles.suggestionText}>
{suggestion.placePrediction?.text.text}
</span>
</button>
)
}
</div >
)
}
```
useAutocompleteSuggestions hook
```import { useEffect, useRef, useState } from 'react';
import { useMapsLibrary } from '@vis.gl/react-google-maps';

export type UseAutocompleteSuggestionsReturn = {
suggestions: google.maps.places.AutocompleteSuggestion[];
isLoading: boolean;
resetSession: () => void;
};

/**
* A reusable hook that retrieves autocomplete suggestions from the Google Places API.
* The data is loaded from the new Autocomplete Data API.
* (https://developers.google.com/maps/documentation/javascript/place-autocomplete-data)
*
* @param inputString The input string for which to fetch autocomplete suggestions.
* @param requestOptions Additional options for the autocomplete request
* (See {@link https://developers.google.com/maps/documentation/javascript/reference/autocomplete-data#AutocompleteRequest}).
*
* @returns An object containing the suggestions, the current loading-status,
* and a function to reset the session.
*
* @example
* ```jsx
* const MyComponent = () => {
* const [input, setInput] = useState('');
* const { suggestions, isLoading, resetSession } = useAutocompleteSuggestions(input, {
* includedPrimaryTypes: ['restaurant']
* });
*
* return (
* <>
* <input value={input} onChange={(e) => setInput(e.target.value)} />
* <ul>
* {suggestions.map(({placePrediction}) => (
* <li key={placePrediction.placeId}>{placePrediction.text.text}</li>
* ))}
* </ul>
* </>
* );
* }
* ```
*/
export function useAutocompleteSuggestions(
inputString: string,
requestOptions: Partial<google.maps.places.AutocompleteRequest> = {}
): UseAutocompleteSuggestionsReturn {
const placesLib = useMapsLibrary('places');

// stores the current sessionToken
const sessionTokenRef =
useRef<google.maps.places.AutocompleteSessionToken | null>(null);

// the suggestions based on the specified input
const [suggestions, setSuggestions] = useState<
google.maps.places.AutocompleteSuggestion[]
>([]);

// indicates if there is currently an incomplete request to the places API
const [isLoading, setIsLoading] = useState(false);

// once the PlacesLibrary is loaded and whenever the input changes, a query
// is sent to the Autocomplete Data API.
useEffect(() => {
if (!placesLib) return;

const { AutocompleteSessionToken, AutocompleteSuggestion } = placesLib;

// Create a new session if one doesn't already exist. This has to be reset
// after `fetchFields` for one of the returned places is called by calling
// the `resetSession` function returned from this hook.
if (!sessionTokenRef.current) {
sessionTokenRef.current = new AutocompleteSessionToken();
}

const request: google.maps.places.AutocompleteRequest = {
...requestOptions,
input: inputString,
sessionToken: sessionTokenRef.current
};

if (inputString === '') {
if (suggestions.length > 0) setSuggestions([]);
return;
}

setIsLoading(true);
AutocompleteSuggestion.fetchAutocompleteSuggestions(request).then(res => {
setSuggestions(res.suggestions);
setIsLoading(false);
});
}, [placesLib, inputString]);

return {
suggestions,
isLoading,
resetSession: () => {
sessionTokenRef.current = null;
setSuggestions([]);
}
};
}
```
2. My main questions about pricing
1. How exactly do session tokens work?
Google documentation mentions session-based pricing, and I'm having trouble understanding what this means in practice.

Does one session token group multiple autocomplete requests into a single billing session?
Are autocomplete requests within the same session free, discounted, or individually billed?
Does the session only become complete when the user selects a prediction and requests Place Details?
What happens if the user types something but never selects a suggestion?
2. Does debouncing actually reduce API costs?
For example, suppose a user types TOKYO.

With a 500ms debounce, will Google receive:

One request after the user finishes typing?
Multiple requests if the user pauses between keystrokes for more than 500ms?
If the user types slowly, could this result in five separate autocomplete requests within the same session?

  1. What does Google mean by unlimited autocomplete requests?
    I've seen references to unlimited requests in the Google Maps pricing documentation.

Does this mean unlimited requests within a session, or does it mean something else?

I'm particularly confused about how this relates to actual billing.

  1. Is my implementation correct?
    I'd also appreciate feedback on whether my current implementation follows Google's recommended session-token lifecycle.

Some things I'm unsure about:

Am I creating and reusing session tokens correctly?
Is resetting the token after fetchFields() the correct approach?
Should I create a new token when the user clears the search input?
Should I reset the session when the user abandons a search without selecting anything?
Is there a better way to prevent unnecessary API requests?
4. Is Google Places Autocomplete expensive?
I'm building an application that will use city autocomplete as an important feature.

I'm concerned about the cost when the application has hundreds or thousands of users searching for cities.

During development alone, I seem to have hit my API usage limit within two days.

Is this normal, or does it indicate that something is wrong with my implementation?

Would you recommend any alternatives or optimization strategies for reducing Google Places API costs?

  1. My goal
    I want to implement Google Places Autocomplete properly while keeping API costs predictable.

I'm not looking for ways to bypass Google's billing. I just want to understand the pricing model, session tokens, and best practices

Any explanations, implementation suggestions, or real-world experiences would be greatly appreciated!

Thanks in advance!

submitted by /u/the_good_dev to r/reactjs
[link] [comments]
  •  

Anyone else experiencing a WIIT/myLoc DUS8 network outage in Düsseldorf? (AS24961)

Hey everyone,

Anyone else having issues with dedicated servers at WIIT/myLoc DUS8 in Düsseldorf today (October 31)?

I have two dedicated servers rented through OneProvider that have been completely unreachable since around 16:00 CET.

Affected network: 213.202.230.xxx

100% packet loss on both servers

All tested TCP connections time out

Routers 89.163.203.xxx return "Destination Host Unreachable"

Cloudflare and Google remain reachable without packet loss

Both servers are Platinum tier, and my customers are affected. I've contacted OneProvider but haven't received any useful response or status update.

Is anyone else affected at DUS8 or elsewhere on AS24961? Has anyone heard anything from WIIT/myLoc?

Any information would be appreciated!

submitted by /u/Salt-Effective-9059 to r/webhosting
[link] [comments]
  •  

How do you use Gutenberg?

Just pure with TT5 pre-installed or do you usually add a Theme (Kadence, Blocksy, GeneratePress, Astra, OceanWP etc.)?
If yes which would you recommend working with?
I prefer working completely free or lower Lifetime Licenses/unlimited.

I worked with Elementor and Pro Elements in the past but want to convert sites slowly to Gutenberg.

Gutenberg finally has its own Responsive Controls and ive tried rebuilding a Elementor Site with Gutenberg. Worked medium well on simple sites but not good enough to bet on this Tech Stack as my primary.

The header/navigation bar and off canvas mobile menu looks ugly and i dont know how this can be edited + in general no option to add simple slide fade animations.

If more options are needed i need to install for example Kadence or Blocksy and then my whole page immediatly looks broken because i build it while having TT5 and i have to rebuild the stuff i build with gutenberg native blocks in kadence blocks which offer the animation features and pixel perfect control like iam used to in elementor.

And now i completely depend on these Third Party companies and i heard Kadence starts to become enshitted.

And i dont know if Gutenbergs workflow is still right nowdays, in Elementor V4 we have this method like in Bricks. You can graphically build your CSS classes like btn and primary-btn and still give the elements local CSS properties if they have unique stuff.

In Gutenberg i did not see this option.

V4 can maintain a site with 100 Pages easily over the years and even create resuable components.

I know how to write html css js react etc. these are familiar concepts and i like how v4 did this.

I dont know about bricks, ive heard its more performant but i dont want to spent 700€ for a lifetime license and in 5 years i suffer from being vendor locked in.
Iam not willing to pay 15 bucks monthly to elementor pro too and do not want to locked into a extreme commercial products system.
Divi costs arround 250€ but its still risky in my opinion.

Ive heard about greenshift but dont understand what it is and how popular this is.

I can live without the CSS first approach and not having 100% pixel perfect options but i can now see if i need more basic features on my demo site i have to rebuild everything in Kadence.

In a real world project i could never tell my client sorry i cant add animations to your site or there is no way to change your navigation bar otherwise your site breaks completely. This could be a compromise in a little bakery family business but not with me receiving money from clients.

Back then Gutenberg didnt even had responsive controls, the only way arround was custom css but i do not want to outsource something like this in the custom css tab or in plugins. I want to work clean and the option to leave projects while knowing the next guy can maintain everything.

submitted by /u/onur24zn to r/Wordpress
[link] [comments]
  •  

[AI] UI/UX & CSS Feedback Request for a Coffee Shop POS System (JSF + PrimeFaces 14)

[AI] UI/UX & CSS Feedback Request for a Coffee Shop POS System (JSF + PrimeFaces 14)

Hi everyone! 👋

​I'm developing a web-based POS & Coffee Shop Management System built with JSF (Jakarta EE 11) + PrimeFaces 14. I'm sharing screenshots of several management and administration views (Roles, Employees, Discounts, Products, and Characteristics).

​I would love to get your honest feedback on UI design, visual hierarchy, layout, and UX.

​💡 Project Context

​This platform handles core store operations:

​Menu & Product Management: Items, types, categories, prices, and dynamic attributes.

​Discounts & Promotions: Flexible discount rates, date-range offers, and rule triggers.

​Staff & Security: Employee records, custom roles, and access control.

​Daily Operations: Cash registers, order processing, and invoicing (not shown in these specific shots).

​🛠️ Tech Stack & Frontend Architecture

​View Layer: Jakarta Server Faces (JSF / XHTML) using modular facelets templates.

​UI Components: PrimeFaces (v14.0 - Jakarta edition) + custom CSS stylesheet (estilos.css).

​Backend: Jakarta EE 11 running on Open Liberty + PostgreSQL (JPA).

​Localization: Native i18n support (Spanish, English, Chinese).

​🔍 Comprehensive UI/UX Feedback Checklist

​I'm looking for feedback on any of the following aspects:

​1. 🎨 Visual Hierarchy & Layout (UI)

​Form & Table Balance: Does the vertical split between the upper form (Inputs) and the lower datatable look clean, or does it feel cluttered?

​Buttons & Actions: Are primary action buttons (Guardar / Save) clearly distinguishable from secondary ones (Limpiar / Clear)?

​Toast Notifications: You'll notice PrimeFaces growl/alert messages in some shots. Are floating toast messages appropriate here, or would inline banner alerts be better UX?

​2. ⚡ Usability & Data Density (UX)

​Readability: Are datatable columns, badge statuses (ACTIVO), and action icons (Edit/Delete) clear and easy to scan for administrative staff?

​Form Field Spacing: Is the padding and margin between input fields, dropdowns, and checkboxes comfortable for desktop use?

​3. 🖌️ Modernizing PrimeFaces & CSS Styling

​Default Theme Polish: What specific CSS tweaks (shadows, border-radius, background grays, typography) would you recommend to give the default PrimeFaces theme a cleaner, more modern look?

​Any suggestions, CSS snippets, or constructive critiques are highly appreciated! 🙌

submitted by /u/Shot-Requirement7171 to r/Frontend
[link] [comments]
  •  

Contact Form 7 Error Message

I get the "There was an error trying to send your message. Please try again later." error message, with a red border, when trying to submit ALL forms on my website (www.rhinelanderrabbits.com). I have WP Mail SMTP set up, and the test email works fine. I'm also using Cloudflare, and everything looks good on that end. I have also tried WP Mail Logging, and it still didn't work. Any other suggestions on things I can try, please and thank you?

submitted by /u/emmer1234 to r/Wordpress
[link] [comments]
  •  

[Showoff Saturday] - Free & open source Stock Market Earnings Calendar

[Showoff Saturday] - Free & open source Stock Market Earnings Calendar

Hi, fellow devs

If you enjoy some stock trading after yelling at Claude/Codex all day, than we are in the same boat.

I like to keep an eye on earnings and major key indicators (always forget about those FOMC meetings), and I don't mind paying for some data, but Earnings Hub charging $20 for earnings calendar is too much.

Anyway, came up with my own with publicly available data.

Eventually thinking maybe, we can have some kind of open-source market tools, that user can configure on his own. Add whatever panels or data he/she wants to make it more personal.

What's done

- Earnings Calendar with earnings report
- Market Fear/Greed indicator
- Key market dates

Working:
- GexData
- Notifications (not sure if those are needed)

Would be glad to hear any suggestions

Cheers, Dan

Edit - links:

Open Market · Earnings calendar
FullPokerFace/open-market: Stock market tools for open minded people

submitted by /u/NetworkEducational81 to r/webdev
[link] [comments]
  •  
❌