Antes de começar, certifica-te de que tens as seguintes ferramentas instaladas no teu sistema:
- Docker e Docker Compose (para o Backend)
- Node.js (versão 18 ou superior)
- Git
O backend do projeto corre dentro de um container Docker, o que garante que a base de dados e o servidor funcionam de forma isolada e idêntica em qualquer máquina.
git clone https://github.com/Ligamer24/personal-reader-assistant.git
cd personal-reader-assistant/backendCopia o ficheiro de exemplo para criares o teu ficheiro .env principal:
cp .env.example .envAbre o ficheiro .env e configura as credenciais da base de dados e as chaves de segurança (ex: Cloudflare Turnstile):
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=livros_api
DB_USERNAME=sail
DB_PASSWORD=password
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="suport@readerAssistant.com"
MAIL_FROM_NAME="Personal Reader Assistant"
TURNSTILE_SITE_KEY=tua_site_key_aqui
TURNSTILE_SECRET_KEY=tua_secret_key_aquiInicia o Docker no teu computador e corre os seguintes comandos para construir e levantar os containers (servidor web e base de dados) em segundo plano, acedendo de seguida ao terminal do container:
docker-compose up -d
docker exec -it nome_do_container_app bashDentro do container, executa:
composer install
php artisan key:generate
php artisan migrate --seed
⚠️ Resolução de Problemas: Caso o comando de migração não funcione por não encontrar o nome ou o serviço, executa a seguinte sequência para reiniciar os volumes e tentar novamente:docker compose down -v docker compose up -d docker exec -it nome_do_container_app bash php artisan migrate --seed
🎉 A tua API deverá estar agora a correr em http://localhost:8000.
O frontend encontra-se na pasta app (ou o nome que deste à pasta do frontend) e utiliza o Expo para facilitar os testes em Web, iOS e Android.
Abre um novo terminal e navega para a pasta correspondente:
cd ../frontend
ou
cd ./frontendnpm installCria um ficheiro .env na raiz do frontend (junto ao package.json) e adiciona as tuas chaves públicas e o URL da API:
EXPO_PUBLIC_TURNSTILE_SITE_KEY=tua_chave_da_cloudflare
EXPO_PUBLIC_API_URL=http://localhost:8000/api
EXPO_PUBLIC_GOOGLE_BOOKS_KEY=tua_chave_da_google_api_aquiArranca o servidor de desenvolvimento do Expo:
npx expo start- Para testar no Browser (Web): Pressiona a tecla
wno terminal. - Para testar no Smartphone: Instala a aplicação Expo Go (iOS/Android) e faz scan do código QR que aparece no terminal.
💡 Nota Importante: O telemóvel e o computador têm de estar na mesma rede!
Caso não consigas utilizar o projeto no telemóvel devido a um erro do Expo Go, usa o comando abaixo e volta a tentar no telemóvel:
npx expo start --tunnel
- Backend: Laravel 11, PHP 8+, MySQL, Docker
- Frontend: React Native, Expo Router, NativeWind (TailwindCSS)
- Segurança: Cloudflare Turnstile (Honeypot), Laravel Sanctum
- APIs Externas: Google Books API