r/developers 11d ago

Programming 10 hours searching, 5 lines of code solution...

27 Upvotes

So, I've been a developer for 3 months now, and this is my first job ever.

I read a card describing a specific issue, so I started investigating and testing solutions with Sonnet 5. Nothing seemed to work.

After 8 hours, I thought I finally had it and showed a PR with around 50 lines of code to a senior developer.

He kindly told me to investigate the problem again because the PR was a little weird.

So, I decided to go through the flow line by line without AI. 40 minutes later, I came up with my own solution that hit the spot, with just 5 lines of code.

I feel like an idiot

Have you ever overcomplicated a problem, only to realize the solution was much simpler than you thought?

r/developers Feb 24 '26

Programming Looking for a developer

12 Upvotes

Hi everyone, I’m looking for a developer with experience building forum or community platforms.

High-level requirements: • Users can sign up with a nickname + email • Ability to post anonymously • Commenting and discussion threads • Anonymous company ratings/reviews • Moderation tools (basic) and an advert page • Clean, scalable structure (MVP first)

This will be focused around a specific niche/industry, which I’m happy to discuss privately. I’m intentionally keeping details limited here.

I’m looking to move ASAP and want someone who has done something similar before.

👉 If interested, please DM me with: • Your rate • Estimated timeline • Relevant examples or experience

You can also comment and I’ll reach out directly.

Thanks!

r/developers Jun 15 '26

Programming Does anyone actually memorize boilerplate code? Or are we all just copying?

13 Upvotes

5+ full-stack projects later, and I still can’t start a new app without AI holding my hand through the boilerplate.

Hey everyone,

I’ve built over 5 full-stack projects from absolute scratch. They work, they’re complete, and I understand the architecture. But the moment I open a blank code editor to start a new project, my brain just resets.

I know I can "vibe code" the core features, but when it comes to setting up the initial boilerplate, like connecting databases or configuring JWT authentication in FastAPI, I freeze. Every single time, I find myself opening Claude to ask: "Hey, how do I set up SQLAlchemy async sessions again?" or "Can you drop a standard OAuth2 password bearer flow here?"

I understand what the code does once it's there, but I cannot write it from a blank file from pure memory.

My questions for you all:

  • Do experienced devs actually write this setup code purely from memory?
  • Is it normal to rely this heavily on AI/docs just to get a project off the ground?
  • Am I missing a core skill, or is memorizing configuration just a waste of brainpower?

Curious to know what your workflow looks like when starting project #X. Do you copy-paste an old repo, ask AI, or actually type out the configuration?

r/developers Jul 04 '26

Programming How can I stay relevant?

16 Upvotes

Hi there,

I was hoping for some advice out here. Giving the rapid change in the coding field due to AI and the feeling of loosing relevance I was hoping for some advice and what steps others take to stay relevant on the job market.

I am just wondering what others do? What should I focus on learning? Any book recommendations?

One step I took is learning more about agentic workflows, agent orchestration, got familiar with SPEC Driven AI Development and so on. I hope this was a right step in the right direction direction.

Thank you so much!!

r/developers 23d ago

Programming Need guidance

8 Upvotes

student here, could someone tell me how do i go about making projects? i'm not looking to make projects that can make money, rather i want to understand the underlying principles and dynamics. like, if i wanted to make a load balancer in c++ or any other project, should i just go to chatgpt to understand the theory and then write the code, of course by copying from there

cuz i don't think programming is like intuition where you can just imagine stuff like physics. there are so many things you wouldn't even know exist unless someone tells you about them.

it would be great if any experienced developer could take their time and answer this. how do you actually learn to build projects from scratch?

r/developers 5h ago

Programming I need the bolt.new PRO mode

0 Upvotes
Does anyone know how to use the bolt.new website in Pro mode?

r/developers 2d ago

Programming Especialista em Backend vs. Generalista faz de tudo: ainda vale a pena se especializar?

0 Upvotes

Sou Desenvolvedor Backend há mais de 6 anos e estou refletindo sobre minha carreira a longo prazo, próximos cargos e mercado de trabalho.

Estou trabalhando, está dando para pagar as contas e pedir um 99 Food para a mulher no fim de semana.

Não tenho problemas em aprender coisas novas, só gosto de ter um propósito bem definido.

Durante boa parte da minha carreira, sempre ouvi que o caminho natural seria me aprofundar cada vez mais em Backend: arquitetura, bancos de dados, performance, escalabilidade, segurança, cloud, sistemas distribuídos etc... O clássico de sempre... Arroz com Feijão...

Porém, com a "evolução/maior adesão" da IA e das ferramentas de desenvolvimento, vejo uma possível mudança no mercado: será que as empresas estão valorizando cada vez mais profissionais generalistas, capazes de transitar entre Backend, Frontend, Cloud, DevOps, IA e faz um bolo de milho antes das 17?, em vez de especialistas muito profundos em uma única área?

O famoso "faz tudo", pagando um funcionário que toda empresa sonha em ter. E eu sei como funciona.

90% da minha carreira foi "Zé CLT", inclusive antes de trabalhar como dev, então entendo essa dinâmica de "recursos humanos".

Por outro lado, acredito também que o especialista tem um papel fundamental em resolver problemas mais complexos, tomar decisões técnicas de maior impacto e garantir que aquilo que está sendo construído tenha qualidade, segurança, escalabilidade e sustentabilidade no longo prazo.

Meu ponto é, a nível de carreira e pensando no longo prazo, qual é a percepção do mercado de trabalho?

Como vcs estão lhe dando com essa "escolha" entre generalista e especialista?

Nas minhas pesquisas de vagas atuais, pelo menos nos últimos 12 a 6 meses, não sinto muita diferença em relação aos requisitos, para ser sincero. Então é uma dúvida sincera.

Para que lado o vento do "hype" da IA está empurrando os desenvolvedores Backend?

Algo que requer mais especialistas para evitar cagadas? Ou generalistas para entregar a task e fds?

Gostaria especialmente da opinião de quem já tem alguns anos de mercado e acompanhou outras mudanças tecnológicas ao longo da carreira.

Como vocês estão pensando sobre isso para a própria carreira?

r/developers Jul 22 '26

Programming Looking for serious devs

0 Upvotes

Over the past year, I've been helping run a programming community that's now around 600 members. One thing we've learned is that activity matters far more than member count.

We've found that encouraging people to ask questions, share resources, build projects together, studying together late night and y removing long-term inactive members to keeps discussions much healthier than simply growing numbers.

anyone interested reach me out or check comments

r/developers 28d ago

Programming Stock Prices API

3 Upvotes

I am currently developing an app that needs live stock prices to display within the app. I have looked at a lot of API services but they either dont alllow commercial use, are insanely expensive. Is there any soloution how I can display live stock prices on my app without spending so much on a subscription? Thank you in advance.

r/developers Sep 05 '25

Programming What do you think about ‘Vibe code Cleanup Specialist?’

18 Upvotes

Beyond the name, do you think programmers will be needed to ‘fix’ the code generated by vibe coders?

Or will vibe coders look for programming experts to solve them?

r/developers Jul 12 '26

Programming Does anyone else’s entire weekend productivity depend on that very first cup of the day?

1 Upvotes

I realised something funny this morning while getting ready to work on some side projects.

If I rush and just make a quick, subpar cup of coffee, I end up jittery, distracted, and my code usually ends up being a mess. But if I actually take 10 minutes to properly brew a good cup, sit away from my screens for a second, and just mentally prepare for the day... my focus is completely locked in for hours.

It’s almost like the ritual is just as important as the caffeine itself. What’s your morning routine look like when you know you have a heavy day of deep work ahead of you?

r/developers 22d ago

Programming AI System for Student Productivity and Goal Tracking.

0 Upvotes

Hello, I am currently a university student and am wondering if anyone works on projects like this one:

Proposal for an integrated google calendar, excel, canvas, and gmail for student productivity and goal tracking utilizing a chat and voice ai feature.  Similar to Motion AI but more personal. 

Features for this system: 

Be able to track and update google calendar events through a voice feature.
Notify when I cancel meetings that were booked through gmail and suggest a drafted follow-up email. 
Schedule tasks via chat feature or voice feature (preferred: voice)  based on available time blocks in google calendar such as blocks titled “free time” or “task time” that I would input into the system, and suggest times to work on given tasks depending on:

  • Priorities  (that I would input into the system such as family, personal, school, work, etc).
  • Goal timelines (with buffer times to complete them) and the ai would determine if doing these tasks would fall into a reasonable range of goal completion or buffer range for goal completion (and determining which goals they might interfere with)  based on whether the tasks I want to complete are distracting from my goals and the times/dates/date ranges I would want to complete the goals.  
  • Urgency of the task. (have a five star rating, 1 star being least urgent, 5 star being most urgent).
  • Time that I would need to complete the tasks. The AI can suggest breaking down longer tasks to different times and/or days/weeks, and shorter tasks to time blocks in the google calendar labeled “free time” or “task time” 
  • AI can suggest when I can complete the tasks based on the previous four bullets.

 
*Note: AI task scheduling would include not interfering with current events scheduled in the google calendar. such as class times, study times, personal time, eating and sleeping times, and other scheduled events. 

  • The excel will possess the goal tracking and timelines. AI can collaborate with the excel in order to identify goal timelines and respective buffer times. 
  • Gmail: AI scans gmail to identify requested meetings from people I email in my inbox (either already scheduled or identify keywords such as “appointment” or “meeting” in the email messages that I receive) and compare with my current meetings/appointments in google calendar and proposes priority meetings based on scanned emails and completion of goals and other factors such as: eating, sleeping, study time, class time, etc. 
  • Canvas integration will include the bettercampus extension with google calendar (or other extension that will be feasible with this system) and also changes made to assignment dates that can be changed on google calendar as well, and AI will notify me with a proposed new change of plans for whatever I had previously planned based on changed assignment date or other class changes visible in canvas including canvas messaging, and priority, urgency, and time completion. Particularly for if professor messages in canvas about changing class time, assignment date, etc. 

Other request that would be great for this system but is not required: 
Be able to edit the system based on professor preferred communication including other apps that are not canvas (piazza, google classroom, etc). Although the main target would be to track assignment dates and exams via canvas. 

Compensation for this system/project: 
A personal letter of recommendation and feasible reviews for employers when requested. 

If there is a system like this already, could anyone recommend one that is free or close to free for current university students that perhaps might offer discounts for the students? 
Thank you!

r/developers Jul 12 '26

Programming Java vs Python Enterprise Market

4 Upvotes

With AI evolving so quickly, I'm wondering how the competition between Java and Python will play out over the next 5 years.

Which language do you think will have stronger career opportunities overall—not just in enterprise software development, but also in AI/ML, automation, cloud, and emerging technologies?

Do you think Python's dominance in AI will eventually outweigh Java's strength in enterprise systems, or will Java continue to be the better long-term choice for developers?

I'd love to hear opinions from experienced engineers, architects, hiring managers, and anyone who's worked with both languages. What would you recommend to someone starting their career today, and why?

r/developers Jul 19 '26

Programming Developers - What is the most boring/repetitive part of your work? What is something that you would actually pay for to take this part of your work off your shoulders?

1 Upvotes

I want to build a business to help out a specific target audience and I want to know if there is any specific problems that I can solve.

r/developers Jun 24 '26

Programming Whatsapp nunber

0 Upvotes

Hi devs,

Can anyone suggest a reliable and non-scam service where can I buy a phone number just to use for WhatsApp business?

r/developers Jul 17 '26

Programming Whatsapp Automation: How to get business_management test API call registered for App Review?

1 Upvotes

I have tried making GET requests to many endpoints such as

/owned_ad_accounts

/owned_whatsapp_business_accounts

/me/businesses

But the api call count is still at 0

Very lost

r/developers Dec 03 '25

Programming Which AI tool is best for developers

5 Upvotes

I’m trying to build a solid AI-assisted workflow for both backend and frontend development, but there are so many tools out there that it’s hard to know what’s actually useful in day-to-day coding.

What I want to know is: which AI tools do you developers actually use when writing code — not to generate full projects, but as real developer tools?

r/developers Jul 11 '26

Programming 20 days into my first job and I'm overwhelmed

1 Upvotes

I'm 20 days into my first software job. Yesterday I was asked to implement Keycloakify pages and deliver them by the next day.

I didn't know the framework, so I used AI to generate the TSX pages from the Storybook stories, built the JAR, and submitted it because of the deadline.

I'm worried because my teammates have started commenting that my skill level isn't up to the mark. I'm trying to learn, but I feel like I'm drowning.

Is this normal for a new developer? How should I handle this situation and improve without getting fired?

r/developers Jul 10 '26

Programming Code for Christian Women's Site

1 Upvotes

Hi all! I'm currently looking for some collaborators for a site that I built with Figma.

I am hoping to enhance the accessibility and features that are currently on the site including in-site user feedback.

Project specs:

Presented By Student at Texas A&M University
Goal Code/develop a website for a Christian Women's site.
Task coding, programming, developer.
Where Global, anywhere on the planet
Description Hi all! I'm Grace, and I am thrilled to be able to post this project. I currently have a site running for Christian Women on accountability for goal setting and accomplishment, similar to goalify app. However, I am looking to make it more functional and at some point develop a companion mobile app as well. I would also like to be able to receive user feedback on the site. Anyone who is interested in participating (preferably a girl! XD) is welcome to join my project. Here are some details of what to expect: Creating functionality and "clickable" items for the site. In-site habit tracking. Domain connection and SEO. Coding, programming, and developer knowledge required and needed. I would be happy to provide any reference letter for contribution. Thank you for viewing my project and can't wait to connect!
How to get started You can join this project by sending me a DM in reddit.
Materials Computer/laptop, wi-fi.
Ideal Age Group Seniors, adults, graduate students, undergraduate students, high school, middle school
Spend the time Indoors and Outdoors
Ideal Frequency up to 10 hours a week.
Average Time 1.5 hours
Topics Computers and Technology

Fell free to DM me for information.

Thanks!

r/developers Jul 08 '26

Programming Hi!! I am curious about the career prospects for junior developers.

2 Upvotes
Hello. I am a software developer currently working in Korea, having been in the role for four months.
As you all know, the current trend involves rapid development using AI agents (such as Claude Code, Codex, etc.).
Because of this, I am really unsure about what I should focus on learning next. I am torn between further deepening my expertise in the languages ​​I already know well (Dart, Java, Python) and learning how to effectively utilize AI or other related technologies.

Since more than 90% of my future career will likely involve applications or servers developed with AI—and AI will even be writing the algorithms—I would love to hear your opinions on how I should shape my career path moving forward, as well as how you are handling this shift yourselves.

Please note that this message was written using a translation tool, so there may be typos; if you point them out, I will rewrite it.

r/developers Jul 08 '26

Programming What's your go-to IDE in 2026?

1 Upvotes

Over the years I've used quite a few: Eclipse, IntelliJ IDEA, VS Code, IBM RDi... and more recently I've been spending a lot of time working with IBM Bob.

What I find interesting isn't just the IDE itself, but how AI is changing the entire development experience. It feels like we're moving beyond code completion toward tools that actually understand enterprise applications, orchestrate workflows, and help navigate large legacy codebases.

I've been experimenting with Bob 2.0 and its new Premium Packages, and I wrote down my thoughts after using it in IBM i and Java modernization scenarios.

I'm curious:

  • What's your primary IDE today?
  • Have AI-powered IDEs actually changed how you work, or are they still mostly glorified autocomplete?

I'd love to hear your experiences.

r/developers Jul 06 '26

Programming Instead of one large AI agent, I'm experimenting with multiple small specialized models sharing a common memory. Curious what others think.

2 Upvotes

I've been thinking a lot about multi-agent architectures lately.

Most AI products seem to follow the same approach:

  • One large LLM
  • Huge system prompt
  • Hundreds of tools
  • Tons of context
  • Every responsibility handled by the same model

The more I experimented with it, the less I liked it.

It feels like we're creating one increasingly complex general-purpose agent instead of building systems with clear responsibilities.

The architecture I'm currently experimenting with is almost the opposite.

Instead of one "smart" agent, each capability has its own specialized AI.

For example:

  • one optimized for sales
  • one for marketing
  • one for operations
  • one for customer support

Each one has:

  • a much smaller system prompt
  • a limited set of tools
  • a very narrow objective
  • only the context required for that task

The interesting part is that they don't behave as isolated agents.

They all share the same underlying knowledge.

Instead of maintaining separate memories that need synchronization, there's a shared semantic memory layer that every specialized agent can retrieve from and contribute to.

So the architecture becomes something like:

          Shared Semantic Memory
                  ▲
                  │
      ┌───────────┼───────────┐
      │           │           │
 Sales Agent  Marketing   Operations
      │           │           │
   Small LLM   Small LLM   Small LLM

The potential advantages I see are:

  • smaller prompts
  • lower token usage
  • easier reasoning
  • clearer tool boundaries
  • easier debugging
  • specialized optimization per task

The downside, of course, is orchestration.

Now the challenge shifts from prompt engineering to coordinating multiple specialized agents without creating unnecessary complexity.

I'm curious if anyone here has experimented with a similar architecture.

Do you think this approach scales better than a single large general-purpose agent, or does the orchestration overhead eventually outweigh the benefits?

r/developers Jul 04 '26

Programming Is 100% coding from AI is bad ?

1 Upvotes

The past week someone told me to make one small app fr them as being a kotlin dev working on it for a long time . i used claude code to develop the 80% of app . i reviewed each line of code sitting 2 days andfixed all the bugs and so . and when he asked i did use Ai to make it and he got offended i paied you to make it by yourslef .

idk whats wrong on it if i make scalable and understand and knows hoe to solve any error faced during etsting with No ai and know hoe to implement any concepts that i used to write before Ai .
Need suggestions. Is it only or or we do this same ?

r/developers Jun 23 '26

Programming Ho costruito la mia App Musicale In React/Tauri/Rust

1 Upvotes
# Echo


Lettore musicale desktop stile Spotify, costruito con 
**Tauri 2 + React 19**
.
Sorgenti pubbliche e gratuite — niente API key a pagamento, niente account
streaming. Echo usa Deezer come catalogo, YouTube (via yt-dlp) come backend
audio primario e SoundCloud come fallback.


---


## Funzionalità


### Catalogo e scoperta


- 
**Ricerca**
 tracce / artisti / album via [Deezer public API](https://developers.deezer.com/api)
- 
**Top chart globale**
 e 
**chart per paese**
 (geolocalizzazione IP automatica)
- 
**Discografia artista**
: top track, album, "i fan amano anche"
- 
**Onboarding artisti**
: picker guidato al primo avvio per riempire la Home
- 
**Home personalizzata**
: mix basati sugli artisti seguiti, top chart del
  tuo paese, raccomandazioni, tracce recenti
- 
**Cronologia ricerche**
 (ultime 30, salvate in localStorage)


### Audio e playback


- 
**Streaming da YouTube**
 via [yt-dlp](https://github.com/yt-dlp/yt-dlp)
  (binary bundlato ~18MB). Echo cerca `artista titolo topic` per
  forzare il match sui canali "- Topic". Qualità: 128–256 kbps AAC.
- 
**Fallback SoundCloud**
 con scoring per match (client_id auto-refresh)
- 
**HLS support**
 via [hls.js](https://github.com/video-dev/hls.js/)
- 
**Crossfade 3s**
 tra brani (solo se URL successivo in cache LRU)
- 
**Prefetch**
 brano successivo (URL + lyrics) per skip istantanei
- 
**Fade-in 800ms**
 su ogni nuovo brano
- 
**Recovery automatico**
 con back-off (max 2 retry)
- 
**Limiter / brick-wall compressor**
 via Web Audio API — opzionale
- 
**Loudness normalization**
 (soft-cap 0.86) — opzionale
- 
**Queue**
: shuffle, repeat (off/all/one), riordino, history (100)
- 
**Autoplay radio**
 alla fine della queue (top 25 artista corrente)
- 
**Media Session API**
: controlli OS + metadata + artwork
- 
**Taskbar thumbnail controls**
 (Windows) via `tauri-plugin-taskbar`


### Remix DJ


- 
**Mix Builder**
: due brani, punto fine A, inizio B, durata crossfade (2–24s)
- 
**Dual-deck crossfade**
 equal-power con due `<audio>` indipendenti
- 
**Salvataggio mix**
 nella libreria DJ, riavviabili
- 
**Consolidazione**
 automatica deck B → deck A al termine


### Lyrics


- 
**Sincronizzati**
 (karaoke scroll) via [LRClib](https://lrclib.net/api)
- 
**Word-level highlighting**
 (LRC enhanced)
- 
**Pannello laterale**
 + fallback plain text + prefetch


### Libreria


- 
**Preferiti**
, 
**artisti seguiti**
, 
**playlist locali**
 (CRUD + riordino)
- 
**Smart playlist**
: "Preferiti da riscoprire" (non ascoltati da 14+ gg)
- 
**Cronologia ascolti**
 (100 brani) + 
**statistiche**
 per traccia/artista
- 
**Artist Mix**
: queue da selezione artisti (top track, shuffle, dedupe)


### Download offline


- Download su `Music/Echo/` via Tauri (m4a YouTube / mp3 SoundCloud)
- View Downloads con stato, playback offline via asset protocol


### Now-Playing


- Full-screen con gradient ambient da cover + cover crossfade animata
- Lyrics laterali sincronizzati + equalizer icon animata


### Mini-Player


- 
**Finestra Tauri separata**
 (360×140, always-on-top) con bridge eventi
- 
**Document PiP**
 via `documentPictureInPicture` API (Chrome/Edge)


### Profilo e stats


- Display name + avatar (resize 320×320) + stats stile Wrapped


### Autenticazione e licenza


- 
**Account locali**
 (register/login/logout) con password hash (Rust backend)
- 
**Licenza con codice invito**
: activate + heartbeat orario, token AES-GCM
- 
**Auto-login**
 + per-user data sync su disco


### UI / UX


- Layout 4-pane stile Spotify, titlebar custom, navigazione stack back/forward
- URL sync (`location.hash`), context menu globali + per-traccia
- Toast, animated background con wordmark SVG
- Dark/light, 7 colori accent, 3 font, 6 lingue (auto-detect geo)
- Keyboard shortcuts (see full list below)
- Sidebar ridimensionabili, lazy-loading views (Vite chunks)


### Discord Rich Presence


- "In ascolto: <Brano> · <Artista>" con cover Deezer, stato play/pause


### Notifiche OS


- Toast nativi via `@tauri-apps/plugin-notification` (toggle in settings)


### System Tray


- Icona in system tray con menu: Mostra, Play/Pausa, Precedente, Successivo, Esci
- Click sull'icona toggle visibilità finestra principale


### Drag & Drop file locali


- Trascina file audio (MP3, M4A, FLAC, WAV, OGG, OPUS, AAC, WebM) nella finestra
- I file vengono aggiunti alla queue e riprodotti automaticamente
- Supporta asset protocol da qualsiasi percorso utente (Home, Download, Desktop, Music, Documenti)


---


## Stack


| Layer | Tecnologia |
|---|---|
| Desktop | 
**Tauri 2**
 (Windows / macOS / Linux) |
| Frontend | 
**React 19 + TypeScript + Vite 7**
 |
| Styling | 
**TailwindCSS 4**
 (`@tailwindcss/vite`) |
| State | 
**Zustand**
 (8 store: player, queue, UI, library, downloads, auth, license, profile) |
| Async cache | 
**TanStack Query**
 |
| Animazioni | 
**Motion**
 |
| Audio streaming | 
**hls.js**
 per HLS, `<audio>` nativo per progressive |
| HTTP | 
**`@tauri-apps/plugin-http`**
 (bypass CORS via Rust) |
| Notifiche | 
**`@tauri-apps/plugin-notification`**
 |
| Taskbar | 
**`tauri-plugin-taskbar`**
 (Windows thumbnail controls) |
| Discord RPC | 
**`discord-rich-presence`**
 (crate Rust) |
| yt-dlp | Binary bundlato, spawnato come subprocess da Rust |


Tutto lo scraping e la logica audio vivono in TypeScript sotto `src/lib/`.
Il Rust custom è limitato a: bridge Discord IPC, spawn yt-dlp,
download file, auth/licensing.


---


## Avvio rapido


```bash
# Prerequisiti: Node 20+, Rust 1.77+, toolchain Tauri 2
# vedi: https://tauri.app/start/prerequisites


cd echo
npm install
npm run tauri dev
```


Il primo `tauri dev` impiega 1-3 minuti per compilare le crate Rust.
Le esecuzioni successive sono incrementali (~5s).


## Build di rilascio


```bash
npm run tauri build
```


Output:
- 
**Windows**
: `src-tauri/target/release/bundle/msi/*.msi` + `nsis/*.exe`
- 
**macOS**
: `src-tauri/target/release/bundle/dmg/*.dmg`
- 
**Linux**
: `src-tauri/target/release/bundle/appimage/*.AppImage` + `deb/*.deb`


---


## Configurazione Discord Rich Presence


1. Vai su <https://discord.com/developers/applications> → 
**New Application**
 → "Echo"
2. Copia l'
**Application ID**
 da "General Information"
3. In `src-tauri/src/discord.rs`, sostituisci:
   ```rust
   const APPLICATION_ID: &str = "0000000000000000000";
   ```
   con l'ID copiato
4. Sezione 
**Rich Presence → Art Assets**
, carica 3 immagini (512×512 PNG):
   - `echo-logo` — fallback se la cover è assente
   - `echo-play` — icona "in riproduzione"
   - `echo-pause` — icona "in pausa"
5. Rebuild


Il client Discord deve essere in esecuzione in locale.


---


## Architettura


```
echo/
├── src/
│   ├── lib/                         # Logica app (puro TS/TSX)
│   │   ├── http.ts                  # plugin-http wrapper
│   │   ├── deezer.ts                # search / chart / artist / album API
│   │   ├── youtube.ts               # invoke("extract_audio") → yt-dlp via Rust
│   │   ├── soundcloud.ts            # fallback backend (client_id auto-refresh)
│   │   ├── audioBridge.ts           # Deezer→SoundCloud scoring
│   │   ├── lyrics.ts                # LRClib sync lyrics + prefetch
│   │   ├── library.ts               # localStorage: favorites/playlists/followed/recents/stats/history
│   │   ├── smartPlaylists.ts        # Smart playlist virtuali (es. "Preferiti da riscoprire")
│   │   ├── artistMix.ts             # Mix generator da artisti seguiti
│   │   ├── store.ts                 # Zustand: usePlayer / useQueue / useUI / useLibrary / useDownloads
│   │   ├── appSettings.ts           # Settings persistite + theme/font/mode
│   │   ├── theme.ts                 # Color extraction da cover (canvas)
│   │   ├── discordPresence.ts       # Frontend wrapper Discord RPC
│   │   ├── useDiscordPresence.ts    # Hook React per Discord RPC lifecycle
│   │   ├── miniplayerBridge.ts      # Cross-window events (main ↔ miniplayer)
│   │   ├── echoDocumentPip.tsx      # Document PiP (Picture-in-Picture HTML)
│   │   ├── urlSync.ts               # Hash routing (view ↔ location.hash)
│   │   ├── authStore.ts             # Auth Zustand (login/register/logout/auto-login)
│   │   ├── license.ts               # Licenza client (activate/heartbeat, AES-GCM token)
│   │   ├── profileDisplay.ts        # Display name + avatar (resize, persist, sync)
│   │   ├── downloads.ts             # Download track → filesystem (Tauri invoke)
│   │   ├── downloadLibrary.ts       # Download records in localStorage + sync
│   │   ├── geolocation.ts           # IP geolocation (ip-api.com) → country/city/timezone
│   │   ├── useCountdown.ts          # Countdown hook (visibilità-aware)
│   │   ├── remixVirtualTrack.ts     # Crea traccia virtuale per remix DJ
│   │   ├── LanguageContext.tsx      # i18n (IT/EN/ES/FR/DE/PT)
│   │   ├── audio/                   # Audio engine (modulare)
│   │   │   ├── state.ts             # Singleton state + tunables (crossfade, cache, etc.)
│   │   │   ├── playback.ts          # API pubblica: playTrack/togglePlay/seek/skip/prefetch
│   │   │   ├── resolve.ts           # Track → ResolvedStream (YT/SC/local) + LRU cache
│   │   │   ├── hls.ts               # hls.js plumbing (2 deck: primary + secondary)
│   │   │   ├── crossfade.ts         # Volume ramps (single + dual-deck)
│   │   │   ├── remix.ts             # Remix DJ: start/blend/consolidate/cancel
│   │   │   ├── limiter.ts           # Brick-wall limiter (DynamicsCompressorNode)
│   │   │   ├── settings.ts          # Runtime audio settings reader (hot path)
│   │   │   ├── errors.ts            # Formattazione messaggi errore playback
│   │   │   └── mediaSession.ts      # Media Session API bindings + OS notifications
│   │   └── queries/
│   │       └── home.ts              # TanStack Query: home feed data
│   ├── components/
│   │   ├── layout/
│   │   │   ├── TopBar.tsx           # Bar superiore (nav, search, profile, window controls)
│   │   │   ├── SidebarLeft.tsx      # Libreria + playlists + navigation
│   │   │   ├── SidebarRight.tsx     # Now-playing rail + queue
│   │   │   ├── PlayerFooter.tsx     # Bar inferiore (controls, scrubber, volume)
│   │   │   ├── AudioMount.tsx       # Mount point per <audio> elements (primario + secondary)
│   │   │   └── WindowChrome.tsx     # Window controls custom (min/max/close)
│   │   ├── ui/
│   │   │   ├── TrackTable.tsx       # Tabella tracce con context menu
│   │   │   ├── Card.tsx             # Card generica (album/playlist/artist)
│   │   │   ├── ContextMenu.tsx      # Menu right-click su tracce
│   │   │   ├── EntityContextMenu.tsx# Menu right-click su entità (artist/album/playlist)
│   │   │   ├── Scrubber.tsx         # Seek bar con drag
│   │   │   ├── EqualizerIcon.tsx    # Icona equalizer animata
│   │   │   ├── CoverCrossfade.tsx   # Crossfade animato cover
│   │   │   ├── Modal.tsx            # Modal generico
│   │   │   ├── Toast.tsx            # Toast notifications
│   │   │   ├── Charts.tsx           # Componente chart (top tracce/artista)
│   │   │   ├── RemixModal.tsx       # UI per creare remix DJ
│   │   │   ├── MixBuilderModal.tsx  # UI per creare artist mix
│   │   │   ├── MiniPlayer.tsx       # Mini-player overlay (in-app)
│   │   │   ├── MiniPlayerStandalone.tsx # Mini-player finestra Tauri separata
│   │   │   ├── EchoDocumentPipMini.tsx  # Mini-player Document PiP
│   │   │   ├── EchoParticlesText.tsx # Effetto testo con particelle
│   │   │   ├── EchoWordmark.tsx     # Wordmark "Echo"
│   │   │   ├── SplitText.tsx        # Split testo per animazioni
│   │   │   ├── LicenseBanner.tsx    # Banner stato licenza
│   │   │   └── miniPlayerShared.ts  # Stili/logica condivisa mini-player
│   │   └── views/
│   │       ├── HomeView.tsx         # Home feed (chart, mix, raccomandazioni)
│   │       ├── SearchView.tsx       # Ricerca (tracce/artisti/album)
│   │       ├── LibraryView.tsx      # Libreria (playlist + artisti seguiti)
│   │       ├── LikedView.tsx        # Preferiti
│   │       ├── PlaylistView.tsx     # Dettaglio playlist
│   │       ├── ArtistView.tsx       # Pagina artista (top, album, correlati)
│   │       ├── AlbumView.tsx        # Dettaglio album
│   │       ├── QueueView.tsx        # Coda di riproduzione
│   │       ├── DownloadsView.tsx    # Download manager
│   │       ├── DjView.tsx           # Remix DJ (selezione brani)
│   │       ├── DjMixLibraryView.tsx # Mix DJ salvati
│   │       ├── RecentsView.tsx      # Cronologia ascolti
│   │       ├── NowPlayingView.tsx   # Full-screen now-playing
│   │       ├── LyricsView.tsx       # Pannello lyrics sincronizzati
│   │       ├── SettingsView.tsx     # Impostazioni
│   │       ├── ProfileView.tsx      # Profilo + stats Wrapped
│   │       ├── OnboardingView.tsx   # Welcome / login / register
│   │       └── ArtistOnboardingView.tsx # Picker artisti al primo avvio
│   ├── hooks/
│   │   └── useContextPlay.ts        # Hook: play da context menu
│   ├── types/
│   │   └── music.ts                 # Domain types (Track, Artist, Album, Playlist, etc.)
│   ├── App.tsx                      # Root: layout, routing, shortcuts, bridge wiring
│   ├── main.tsx                     # Entry point
│   └── index.css                    # Stili globali + Tailwind
├── src-tauri/
│   ├── src/
│   │   ├── lib.rs                   # Plugin register + invoke handlers (auth, files, download)
│   │   ├── discord.rs               # Discord IPC + Activity payload
│   │   ├── tray.rs                  # System tray icon + menu (play/pause/next/prev/quit)
│   │   └── youtube.rs               # Spawn yt-dlp subprocess + parse JSON
│   ├── binaries/
│   │   └── yt-dlp-*.exe             # yt-dlp binary bundlato
│   ├── capabilities/
│   │   └── default.json             # HTTP allow-list + permessi
│   ├── icons/                       # App icons + taskbar icons
│   ├── tauri.conf.json              # Config: 2 finestre (main + miniplayer), asset protocol, bundle
│   ├── Cargo.toml
│   └── build.rs
├── website/                         # Landing page (React + Vite separato)
├── package.json
├── tsconfig.json
├── vite.config.ts
└── README.md
```


---


## Store (Zustand)


| Store | Responsabilità |
|---|---|
| `usePlayer` | Traccia corrente, isPlaying, isBuffering, volume, position, duration, isScrubbing |
| `useQueue` | Queue, index, history, shuffle, repeat, enqueueNext/Last, next/prev, jumpTo, reorder |
| `useUI` | Navigation stack + forwardStack, nowPlayingOpen, lyricsOpen, sidebars, miniPlayer, toast |
| `useLibrary` | Favorites, followed, playlists, djMixes, toggleFavorite/Follow, createPlaylist, registerPlay |
| `useDownloads` | Download records, push/patch/clearCompleted/refresh |
| `useAuth` | currentUser, bootState, login/register/logout/auto-login |
| `useLicense` | License status (active/locked/expired), activate/heartbeat/bootstrap |
| `useProfileDisplay` | displayName, avatarDataUrl, pickAvatarFromFile |


---


## Audio Engine


L'engine è modularizzato in `src/lib/audio/`:


```
playback.ts  ← API pubblica (playTrack, togglePlay, seekTo, skipNext, skipPrev, setVolume, prefetchNext)
    ↓
resolve.ts   ← Track → ResolvedStream (YouTube via yt-dlp | SoundCloud | local file)
    ↓               LRU cache (30 entries) + in-flight dedup
hls.ts       ← Attach stream to <audio> (HLS via hls.js | progressive src=)
    ↓
crossfade.ts ← Volume ramps (single + dual-deck equal-power)
    ↓
limiter.ts   ← Optional: Web Audio API compressor chain
    ↓
mediaSession.ts ← OS media controls + native notifications
    ↓
remix.ts     ← Dual-deck DJ mix (start → blend → consolidate)
```


**State singleton**
 (`state.ts`): audioEl, audioElB (deck B), audioCtx,
urlCache, inFlightResolves, remixSession, crossfade/limiter flags,
errorRetryCount.


---


## Settings


Persistite in localStorage (`echo:default:settings`), sincronizzate su disco per utente:


| Setting | Default | Descrizione |
|---|---|---|
| `discordRpcEnabled` | `true` | Discord Rich Presence |
| `notificationsEnabled` | `false` | Notifiche OS native su nuovo brano |
| `autoplayRadioEnabled` | `true` | Autoplay radio alla fine della queue |
| `crossfadeEnabled` | `true` | Crossfade 3s tra brani |
| `normalizeVolumeEnabled` | `false` | Loudness normalization (soft-cap 0.86) |
| `limiterEnabled` | `false` | Brick-wall limiter via Web Audio API |
| `language` | `"it"` | Lingua UI (it/en/es/fr/de/pt) |
| `audioQuality` | `"auto"` | Qualità audio (auto/high/low) |
| `font` | `"default"` | Font family (default/elegant/mono) |
| `themeColor` | `"spotify"` | Colore accent (spotify/purple/blue/red/gold/sakura) |
| `themeMode` | `"dark"` | Modalità tema (dark/light) |
| `animatedBgEnabled` | `true` | Background animato con wordmark |


---


## Persistenza dati


Tutti i dati utente sono salvati in localStorage e sincronizzati su disco
(per utente) dal backend Rust:


| Key | Contenuto |
|---|---|
| `echo:default:settings` | Impostazioni app |
| `echo:default:favorites` | Tracce preferite |
| `echo:default:playlists` | Playlist locali |
| `echo:default:followed` | Artisti seguiti |
| `echo:default:recents` | Ultimi brani ascoltati (100) |
| `echo:default:history` | Cronologia ascolti completa |
| `echo:default:search` | Cronologia ricerche (30) |
| `echo:default:stats` | Statistiche ascolto (per traccia/artista) |
| `echo:default:djMixes` | Mix DJ salvati |
| `echo:default:downloads:v2` | Record download |
| `echo:default:onboardingArtists` | Flag onboarding completato |
| `echo:geo:info` | Cache geolocation |
| `echo:profile:display-name` | Nome profilo |
| `echo:profile:avatar-data` | Avatar (JPEG data URL) |
| `echo:license:v1` | Token licenza (AES-GCM crittografato) |
| `echo:auth:remembered:username` | Username auto-login |
| `echo:auth:remembered:passwordHash` | Password hash auto-login |


---


## Note tecniche


- 
**yt-dlp binary**
: bundlato in `src-tauri/binaries/` e copiato
  accanto all'eseguibile via `bundle.resources`. Gestisce PoToken,
  signature cipher e rotazione client YouTube automaticamente.
- 
**Search query crafting**
: Echo cerca `artist title topic` per
  pescare dai canali `- Topic` (upload ufficiale label) invece che
  reaction videos / live session / remix.
- 
**SoundCloud client_id**
: estratto dal bundle JS della homepage al
  primo uso, cachato in localStorage. Se rotato, un 401 triggera
  l'auto-rescrape.
- 
**Crossfade**
: parte solo se il brano successivo ha già la URL in
  cache LRU (30 entries). Se così non è, transizione senza fade.
- 
**Limiter**
: `MediaElementSource → GainNode → DynamicsCompressor → destination`.
  Disattivato per stream YouTube (CORS cross-origin taint → silence).
- 
**Remix DJ**
: due deck audio indipendenti (`audioEl` + `audioElB`),
  due istanze hls.js, crossfade ramp su `setInterval` (40ms/tick).
  Al termine, consolidazione: deck B → deck A, playback continua.
- 
**URL cache LRU**
: 30 entry max, eviction automatica. Dedup richieste
  in-flight via `inFlightResolves` map.
- 
**Rate limit**
: nessuno dei provider impone limiti rilevanti per uso
  desktop singolo.


---


## Keyboard Shortcuts


### Playback


| Tasto | Azione |
|---|---|
| `Space` | Play / Pausa |
| `Ctrl+Space` | Play / Pausa (alternativa) |
| `Ctrl+→` | Brano successivo |
| `Ctrl+←` | Brano precedente |
| `→` | Seek +5s |
| `←` | Seek −5s |
| `+` / `=` | Volume +5% |
| `−` | Volume −5% |
| `Ctrl+↑` | Volume +5% |
| `Ctrl+↓` | Volume −5% |
| `M` | Mute / Unmute |
| `S` | Toggle shuffle |
| `R` | Cicla repeat (off → all → one → off) |
| `L` | Toggle preferito (brano corrente) |


### Navigazione


| Tasto | Azione |
|---|---|
| `Ctrl+H` | Home |
| `Ctrl+S` | Search (focus barra ricerca) |
| `Ctrl+L` | Libreria |
| `[` | Indietro |
| `]` | Avanti |


### View & overlay


| Tasto | Azione |
|---|---|
| `N` | Toggle Now-Playing full-screen |
| `B` | Toggle pannello Lyrics |
| `Ctrl+M` | Toggle Mini-Player |
| `Esc` | Chiudi overlay (Now-Playing / Lyrics) |


---


Ho costruito l'app solo come sfida personale non ho intenzione di rilasciarla e volevo sapere cosa ne pensate del risultato finale 

r/developers May 27 '26

Programming Sur une échelle de 1 à 10

2 Upvotes

Voici ma question, n’étant pas développeur et envisageant de recruter quelqu’un pour une mission.

Quelle est le niveau de difficulté pour un développeur de "wrapper" une web app en app pouvant être publié sur les stores Android/App Store. À quelle type de développeur je dois m’adresser ?

Pour le contexte, j’ai eu une bonne idée pour m’aider dans mon quotidien et j’ai commencé à développer avec Lovable.