@@ -322,7 +322,7 @@ export default function JobDetailPage({
>
- Requisitos
+ Requirements
@@ -345,21 +345,21 @@ export default function JobDetailPage({
>
- Sobre a empresa
+ About the company
- {job.company} é uma empresa líder no mercado,
- comprometida em criar um ambiente de trabalho inclusivo
- e inovador. Oferecemos benefícios competitivos e
- oportunidades de crescimento profissional.
+ {job.company} is a market leader committed to creating
+ an inclusive and innovative workplace. We offer
+ competitive benefits and opportunities for professional
+ growth.
- Tamanho
+ Size
{mockCompanyInfo.size}
@@ -368,7 +368,7 @@ export default function JobDetailPage({
- Setor
+ Industry
{mockCompanyInfo.industry}
@@ -377,7 +377,7 @@ export default function JobDetailPage({
- Fundada
+ Founded
{mockCompanyInfo.founded}
@@ -414,19 +414,19 @@ export default function JobDetailPage({
- Interessado na vaga?
+ Interested in this role?
- Candidate-se agora e faça parte da nossa equipe!
+ Apply now and join our team!
- Candidatar-se
+ Apply now
@@ -435,7 +435,7 @@ export default function JobDetailPage({
- Tipo de vaga:
+ Job type:
- Localização:
+ Location:
{job.location}
@@ -455,7 +455,7 @@ export default function JobDetailPage({
{job.salary && (
- Salário:
+ Salary:
{job.salary}
@@ -464,7 +464,7 @@ export default function JobDetailPage({
)}
- Publicado:
+ Posted:
{formatTimeAgo(job.postedAt)}
@@ -483,7 +483,7 @@ export default function JobDetailPage({
>
- Vagas similares
+ Similar jobs
{mockJobs
@@ -510,7 +510,7 @@ export default function JobDetailPage({
))}
- Ver todas as vagas
+ View all jobs
diff --git a/frontend/src/app/jobs/page.tsx b/frontend/src/app/jobs/page.tsx
index d41e853..dcf5b79 100644
--- a/frontend/src/app/jobs/page.tsx
+++ b/frontend/src/app/jobs/page.tsx
@@ -44,7 +44,7 @@ function JobsContent() {
setShowFilters(true) // Show filters if searching
}
- if (type === "remoto") {
+ if (type === "remote") {
setWorkModeFilter("remote")
setShowFilters(true)
}
@@ -69,7 +69,7 @@ function JobsContent() {
setJobs(mappedJobs)
}
} catch (err) {
- console.error("Erro ao buscar vagas", err)
+ console.error("Error fetching jobs", err)
if (isMounted) {
setError(t('jobs.error'))
setJobs(mockJobs)
@@ -146,6 +146,11 @@ function JobsContent() {
return filtered
}, [debouncedSearchTerm, locationFilter, typeFilter, workModeFilter, sortBy, jobs])
+ const getTypeLabel = (type: string) => {
+ const label = t(`jobs.types.${type}`)
+ return label !== `jobs.types.${type}` ? label : type
+ }
+
// Pagination Logic
const totalPages = Math.ceil(filteredAndSortedJobs.length / ITEMS_PER_PAGE)
const paginatedJobs = filteredAndSortedJobs.slice(
@@ -256,9 +261,7 @@ function JobsContent() {
{t('jobs.filters.all')}
{uniqueTypes.map((type) => (
- {type === "full-time" ? "Tempo integral" :
- type === "part-time" ? "Meio período" :
- type === "contract" ? "Contrato" : type}
+ {getTypeLabel(type)}
))}
@@ -322,7 +325,7 @@ function JobsContent() {
{hasActiveFilters && (
-
Filtros ativos:
+
Active filters:
{searchTerm && (
"{searchTerm}"
@@ -349,9 +352,9 @@ function JobsContent() {
)}
{workModeFilter !== "all" && (
- {workModeFilter === "remote" ? "Remoto" :
- workModeFilter === "hybrid" ? "Híbrido" :
- workModeFilter === "onsite" ? "Presencial" : workModeFilter}
+ {workModeFilter === "remote" ? t("workMode.remote") :
+ workModeFilter === "hybrid" ? t("workMode.hybrid") :
+ workModeFilter === "onsite" ? t("workMode.onsite") : workModeFilter}
setWorkModeFilter("all")} className="ml-1">
@@ -448,7 +451,7 @@ function JobsContent() {
)
}
-export default function VagasPage() {
+export default function JobsPage() {
return (
diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx
index ae971ff..e1781b1 100644
--- a/frontend/src/app/page.tsx
+++ b/frontend/src/app/page.tsx
@@ -111,7 +111,7 @@ export default function HomePage() {
-
+
{t('home.hero.imCompany')}
@@ -277,7 +277,7 @@ export default function HomePage() {
{t('home.cta.subtitle')}
-
+
{t('home.cta.button')}
diff --git a/frontend/src/app/privacidade/page.tsx b/frontend/src/app/privacy/page.tsx
similarity index 68%
rename from frontend/src/app/privacidade/page.tsx
rename to frontend/src/app/privacy/page.tsx
index e28d394..e90c33f 100644
--- a/frontend/src/app/privacidade/page.tsx
+++ b/frontend/src/app/privacy/page.tsx
@@ -8,13 +8,13 @@ export default function PrivacyPage() {
-
Política de Privacidade
+
Privacy Policy
- Esta Política de Privacidade descreve como coletamos, usamos e protegemos suas informações pessoais.
+ This Privacy Policy describes how we collect, use, and protect your personal information.
- Em construção...
+ Coming soon...
diff --git a/frontend/src/app/profile-db/page.tsx b/frontend/src/app/profile-db/page.tsx
index a041b5b..ee8b333 100644
--- a/frontend/src/app/profile-db/page.tsx
+++ b/frontend/src/app/profile-db/page.tsx
@@ -39,11 +39,11 @@ export default function ProfilePage() {
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault()
updateProfileData(formData)
- alert("✅ Perfil salvo com sucesso no banco local!")
+ alert("✅ Profile saved successfully to local storage!")
}
const handleClearDatabase = () => {
- if (confirm("⚠️ Tem certeza que deseja limpar todos os dados? Esta ação não pode ser desfeita.")) {
+ if (confirm("⚠️ Are you sure you want to clear all data? This action cannot be undone.")) {
localDB.clearAllData()
window.location.reload()
}
@@ -67,7 +67,7 @@ export default function ProfilePage() {
-
Carregando dados do banco local...
+
Loading local data...
)
@@ -79,7 +79,7 @@ export default function ProfilePage() {
@@ -89,7 +89,7 @@ export default function ProfilePage() {
- Banco Local Ativo
+ Local storage active
@@ -99,7 +99,7 @@ export default function ProfilePage() {
onClick={handleExportData}
className="text-xs"
>
- Exportar
+ Export
- Limpar
+ Clear
@@ -118,10 +118,10 @@ export default function ProfilePage() {
- Editar Perfil
+ Edit profile
- Seus dados são salvos automaticamente no navegador
+ Your data is saved automatically in your browser
@@ -136,13 +136,13 @@ export default function ProfilePage() {
)
-}
\ No newline at end of file
+}
diff --git a/frontend/src/app/profile/page.tsx b/frontend/src/app/profile/page.tsx
index ad13c1c..dcbf761 100644
--- a/frontend/src/app/profile/page.tsx
+++ b/frontend/src/app/profile/page.tsx
@@ -21,7 +21,7 @@ export default function ProfilePage() {
bio: ""
})
- // Sincronizar dados do perfil com o formulário
+ // Sync profile data with the form
useEffect(() => {
if (profileData) {
setFormData({
@@ -40,14 +40,14 @@ export default function ProfilePage() {
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault()
- // Salvar dados no banco local
+ // Save data to local storage
updateProfileData(formData)
- alert("✅ Perfil salvo com sucesso no banco local!")
+ alert("✅ Profile saved successfully to local storage!")
}
const handleClearDatabase = () => {
- if (confirm("⚠️ Tem certeza que deseja limpar todos os dados? Esta ação não pode ser desfeita.")) {
+ if (confirm("⚠️ Are you sure you want to clear all data? This action cannot be undone.")) {
localDB.clearAllData()
window.location.reload()
}
@@ -71,7 +71,7 @@ export default function ProfilePage() {
-
Carregando dados do banco local...
+
Loading local data...
)
@@ -83,18 +83,18 @@ export default function ProfilePage() {
- {/* Status do Banco de Dados */}
+ {/* Local storage status */}
- Banco Local Ativo
+ Local storage active
@@ -104,7 +104,7 @@ export default function ProfilePage() {
onClick={handleExportData}
className="text-xs"
>
- Exportar
+ Export
- Limpar
+ Clear
@@ -123,14 +123,14 @@ export default function ProfilePage() {
- Editar Perfil
+ Edit profile
- Seus dados são salvos automaticamente no navegador
+ Your data is saved automatically in your browser
- {/* Upload de foto de perfil com banco de dados */}
+ {/* Profile photo upload with local data */}
- {/* Formulário */}
+ {/* Form */}
-
Telefone
+
Phone
- Biografia
+ Bio
handleInputChange("bio", e.target.value)}
- placeholder="Conte um pouco sobre você..."
+ placeholder="Tell us a bit about yourself..."
rows={4}
/>
- Salvar Perfil
+ Save profile
- {/* Debug: Dados salvos */}
+ {/* Debug: Saved data */}
{profileData && (
- Dados Salvos no Banco Local
+ Saved local data
{JSON.stringify({
...profileData,
- profileImage: profileData.profileImage ? "✅ Imagem salva" : "❌ Sem imagem"
+ profileImage: profileData.profileImage ? "✅ Image saved" : "❌ No image"
}, null, 2)}
@@ -213,4 +213,4 @@ export default function ProfilePage() {
)
-}
\ No newline at end of file
+}
diff --git a/frontend/src/app/cadastro/candidato/page.tsx b/frontend/src/app/register/candidate/page.tsx
similarity index 99%
rename from frontend/src/app/cadastro/candidato/page.tsx
rename to frontend/src/app/register/candidate/page.tsx
index 7d26aae..1982903 100644
--- a/frontend/src/app/cadastro/candidato/page.tsx
+++ b/frontend/src/app/register/candidate/page.tsx
@@ -540,11 +540,11 @@ export default function CandidateRegisterPage() {
className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
{t("register.candidate.acceptTerms.prefix")}{" "}
-
+
{t("register.candidate.acceptTerms.terms")}
{" "}
{t("register.candidate.acceptTerms.and")}{" "}
-
+
{t("register.candidate.acceptTerms.privacy")}
diff --git a/frontend/src/app/cadastro/empresa/page.tsx b/frontend/src/app/register/company/page.tsx
similarity index 76%
rename from frontend/src/app/cadastro/empresa/page.tsx
rename to frontend/src/app/register/company/page.tsx
index cad0383..75a2c62 100644
--- a/frontend/src/app/cadastro/empresa/page.tsx
+++ b/frontend/src/app/register/company/page.tsx
@@ -43,26 +43,26 @@ import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
const companySchema = z.object({
- companyName: z.string().min(2, "Nome da empresa deve ter pelo menos 2 caracteres"),
- cnpj: z.string().min(14, "CNPJ deve ter 14 dígitos"),
- email: z.string().email("Email inválido"),
- password: z.string().min(6, "Senha deve ter pelo menos 6 caracteres"),
+ companyName: z.string().min(2, "Company name must be at least 2 characters"),
+ cnpj: z.string().min(14, "CNPJ must have 14 digits"),
+ email: z.string().email("Invalid email"),
+ password: z.string().min(6, "Password must be at least 6 characters"),
confirmPassword: z.string(),
- phone: z.string().min(10, "Telefone deve ter pelo menos 10 dígitos"),
- website: z.string().url("Website deve ser uma URL válida").optional().or(z.literal("")),
- address: z.string().min(5, "Endereço deve ter pelo menos 5 caracteres"),
- city: z.string().min(2, "Cidade é obrigatória"),
- state: z.string().min(2, "Estado é obrigatório"),
- zipCode: z.string().min(8, "CEP deve ter 8 dígitos"),
- sector: z.string().min(1, "Setor de atuação é obrigatório"),
- companySize: z.string().min(1, "Tamanho da empresa é obrigatório"),
- description: z.string().min(20, "Descrição deve ter pelo menos 20 caracteres"),
- contactPerson: z.string().min(2, "Nome do responsável é obrigatório"),
- contactRole: z.string().min(2, "Cargo do responsável é obrigatório"),
- acceptTerms: z.boolean().refine(val => val === true, "Você deve aceitar os termos"),
+ phone: z.string().min(10, "Phone must have at least 10 digits"),
+ website: z.string().url("Website must be a valid URL").optional().or(z.literal("")),
+ address: z.string().min(5, "Address must be at least 5 characters"),
+ city: z.string().min(2, "City is required"),
+ state: z.string().min(2, "State is required"),
+ zipCode: z.string().min(8, "ZIP code must have 8 digits"),
+ sector: z.string().min(1, "Industry is required"),
+ companySize: z.string().min(1, "Company size is required"),
+ description: z.string().min(20, "Description must be at least 20 characters"),
+ contactPerson: z.string().min(2, "Contact name is required"),
+ contactRole: z.string().min(2, "Contact role is required"),
+ acceptTerms: z.boolean().refine(val => val === true, "You must accept the terms"),
acceptNewsletter: z.boolean().optional(),
}).refine(data => data.password === data.confirmPassword, {
- message: "Senhas não coincidem",
+ message: "Passwords do not match",
path: ["confirmPassword"],
});
@@ -91,14 +91,14 @@ export default function CompanyRegisterPage() {
const onSubmit = async (data: CompanyFormData) => {
setLoading(true);
try {
- // Simular cadastro
+ // Simulate registration
await new Promise(resolve => setTimeout(resolve, 2000));
- console.log("Dados da empresa:", data);
+ console.log("Company data:", data);
- // Redirecionar para login após cadastro
- router.push("/login?message=Cadastro realizado com sucesso! Faça login para continuar.");
+ // Redirect to login after registration
+ router.push("/login?message=Registration completed successfully! Please sign in to continue.");
} catch (error) {
- console.error("Erro no cadastro:", error);
+ console.error("Registration error:", error);
} finally {
setLoading(false);
}
@@ -120,7 +120,7 @@ export default function CompanyRegisterPage() {
return (
- {/* Left Panel - Informações */}
+ {/* Left Panel - Information */}
- Cadastre sua Empresa
+ Register your company
- Encontre os melhores talentos para sua empresa.
- Publique vagas e conecte-se com candidatos qualificados.
+ Find top talent for your company.
+ Post jobs and connect with qualified candidates.
-
Publique vagas gratuitamente
+
Post jobs for free
-
Acesso a milhares de candidatos
+
Access thousands of candidates
-
Ferramentas de gestão de candidaturas
+
Application management tools
-
Dashboard completo de recrutamento
+
Complete recruiting dashboard
- {/* Right Panel - Formulário */}
+ {/* Right Panel - Form */}
{/* Header */}
@@ -171,25 +171,25 @@ export default function CompanyRegisterPage() {
className="inline-flex items-center gap-2 text-muted-foreground hover:text-foreground mb-4 transition-colors"
>
- Voltar ao Login
+ Back to login
- Criar Conta - Empresa
+ Create account - company
- Preencha os dados da sua empresa
+ Fill in your company details
{/* Progress Indicator */}
- Etapa {currentStep} de 3
+ Step {currentStep} of 3
- {currentStep === 1 && "Dados da Empresa"}
- {currentStep === 2 && "Endereço e Contato"}
- {currentStep === 3 && "Informações Adicionais"}
+ {currentStep === 1 && "Company details"}
+ {currentStep === 2 && "Address & contact"}
+ {currentStep === 3 && "Additional information"}
@@ -201,7 +201,7 @@ export default function CompanyRegisterPage() {
- {/* Step 1: Dados da Empresa */}
+ {/* Step 1: Company details */}
{currentStep === 1 && (
-
Nome da Empresa
+
Company name
@@ -246,13 +246,13 @@ export default function CompanyRegisterPage() {
-
Email Corporativo
+
Company email
@@ -263,13 +263,13 @@ export default function CompanyRegisterPage() {
-
Senha
+
Password
@@ -293,13 +293,13 @@ export default function CompanyRegisterPage() {
-
Confirmar Senha
+
Confirm password
@@ -323,12 +323,12 @@ export default function CompanyRegisterPage() {
- Próxima Etapa
+ Next step
)}
- {/* Step 2: Endereço e Contato */}
+ {/* Step 2: Address & contact */}
{currentStep === 2 && (
-
Telefone
+
Phone
-
Website (opcional)
+
Website (optional)
@@ -373,13 +373,13 @@ export default function CompanyRegisterPage() {
-
Endereço
+
Address
@@ -391,7 +391,7 @@ export default function CompanyRegisterPage() {
-
Cidade
+
City
- Estado
+ State
setValue("state", value)}>
-
+
Acre
@@ -446,7 +446,7 @@ export default function CompanyRegisterPage() {
- CEP
+ ZIP code
- Voltar
+ Back
- Próxima Etapa
+ Next step
)}
- {/* Step 3: Informações Adicionais */}
+ {/* Step 3: Additional information */}
{currentStep === 3 && (
- Setor de Atuação
+ Industry
setValue("sector", value)}>
-
+
- Tecnologia
- Financeiro
- Saúde
- Educação
- Varejo
- Construção
- Indústria
- Serviços
- Agricultura
- Transporte
- Energia
- Consultoria
+ Technology
+ Finance
+ Healthcare
+ Education
+ Retail
+ Construction
+ Industry
+ Services
+ Agriculture
+ Transportation
+ Energy
+ Consulting
Marketing
- Outros
+ Other
{errors.sector && (
@@ -508,18 +508,18 @@ export default function CompanyRegisterPage() {
- Tamanho da Empresa
+ Company size
setValue("companySize", value)}>
-
+
- 1 a 10 funcionários
- 11 a 50 funcionários
- 51 a 200 funcionários
- 201 a 500 funcionários
- 501 a 1000 funcionários
- Mais de 1000 funcionários
+ 1 to 10 employees
+ 11 to 50 employees
+ 51 to 200 employees
+ 201 to 500 employees
+ 501 to 1000 employees
+ More than 1000 employees
{errors.companySize && (
@@ -528,10 +528,10 @@ export default function CompanyRegisterPage() {
-
Descrição da Empresa
+
Company description
@@ -542,11 +542,11 @@ export default function CompanyRegisterPage() {
@@ -614,10 +614,10 @@ export default function CompanyRegisterPage() {
- Voltar
+ Back
- {loading ? "Criando conta..." : "Criar Conta"}
+ {loading ? "Creating account..." : "Create account"}
@@ -626,9 +626,9 @@ export default function CompanyRegisterPage() {
- Já tem uma conta?{" "}
+ Already have an account?{" "}
- Faça login
+ Sign in
@@ -636,4 +636,4 @@ export default function CompanyRegisterPage() {
);
-}
\ No newline at end of file
+}
diff --git a/frontend/src/app/termos/page.tsx b/frontend/src/app/terms/page.tsx
similarity index 73%
rename from frontend/src/app/termos/page.tsx
rename to frontend/src/app/terms/page.tsx
index 3f74641..7e801c2 100644
--- a/frontend/src/app/termos/page.tsx
+++ b/frontend/src/app/terms/page.tsx
@@ -8,13 +8,13 @@ export default function TermsPage() {
-
Termos de Uso
+
Terms of Use
- Ao utilizar nosso serviço, você concorda com estes termos.
+ By using our service, you agree to these terms.
- Em construção...
+ Coming soon...
diff --git a/frontend/src/app/vagas/[id]/candidatura/page.tsx b/frontend/src/app/vagas/[id]/candidatura/page.tsx
deleted file mode 100644
index c079121..0000000
--- a/frontend/src/app/vagas/[id]/candidatura/page.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { redirect } from "next/navigation";
-
-export default async function VagasJobApplicationRedirectPage({
- params,
-}: {
- params: Promise<{ id: string }>;
-}) {
- const { id } = await params;
- redirect(`/jobs/${id}/candidatura`);
-}
diff --git a/frontend/src/app/vagas/[id]/page.tsx b/frontend/src/app/vagas/[id]/page.tsx
deleted file mode 100644
index b77daa4..0000000
--- a/frontend/src/app/vagas/[id]/page.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { redirect } from "next/navigation";
-
-export default async function VagasJobRedirectPage({
- params,
-}: {
- params: Promise<{ id: string }>;
-}) {
- const { id } = await params;
- redirect(`/jobs/${id}`);
-}
diff --git a/frontend/src/app/vagas/page.tsx b/frontend/src/app/vagas/page.tsx
deleted file mode 100644
index fcb161d..0000000
--- a/frontend/src/app/vagas/page.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { redirect } from "next/navigation";
-
-export default function VagasRedirectPage() {
- redirect("/jobs");
-}
diff --git a/frontend/src/components/company-sidebar.tsx b/frontend/src/components/company-sidebar.tsx
index 42c1c94..4ba1f31 100644
--- a/frontend/src/components/company-sidebar.tsx
+++ b/frontend/src/components/company-sidebar.tsx
@@ -28,44 +28,44 @@ export function CompanySidebar({ className }: CompanySidebarProps) {
{
label: "Dashboard",
icon: LayoutDashboard,
- href: "/dashboard/empresa",
- active: pathname === "/dashboard/empresa",
+ href: "/dashboard/company",
+ active: pathname === "/dashboard/company",
},
{
- label: "Minhas Vagas",
+ label: "My jobs",
icon: Briefcase,
- href: "/dashboard/empresa/vagas",
- active: pathname?.startsWith("/dashboard/empresa/vagas"),
+ href: "/dashboard/company/jobs",
+ active: pathname?.startsWith("/dashboard/company/jobs"),
},
{
- label: "Candidaturas",
+ label: "Applications",
icon: Users,
- href: "/dashboard/empresa/candidaturas",
- active: pathname?.startsWith("/dashboard/empresa/candidaturas"),
+ href: "/dashboard/company/applications",
+ active: pathname?.startsWith("/dashboard/company/applications"),
},
{
- label: "Mensagens",
+ label: "Messages",
icon: MessageSquare,
- href: "/dashboard/empresa/mensagens",
- active: pathname?.startsWith("/dashboard/empresa/mensagens"),
+ href: "/dashboard/company/messages",
+ active: pathname?.startsWith("/dashboard/company/messages"),
},
{
- label: "Relatórios",
+ label: "Reports",
icon: BarChart3,
- href: "/dashboard/empresa/relatorios",
- active: pathname?.startsWith("/dashboard/empresa/relatorios"),
+ href: "/dashboard/company/reports",
+ active: pathname?.startsWith("/dashboard/company/reports"),
},
{
- label: "Perfil da Empresa",
+ label: "Company profile",
icon: Building2,
- href: "/dashboard/empresa/perfil",
- active: pathname?.startsWith("/dashboard/empresa/perfil"),
+ href: "/dashboard/company/profile",
+ active: pathname?.startsWith("/dashboard/company/profile"),
},
{
- label: "Configurações",
+ label: "Settings",
icon: Settings,
- href: "/dashboard/empresa/configuracoes",
- active: pathname?.startsWith("/dashboard/empresa/configuracoes"),
+ href: "/dashboard/company/settings",
+ active: pathname?.startsWith("/dashboard/company/settings"),
},
];
@@ -82,14 +82,14 @@ export function CompanySidebar({ className }: CompanySidebarProps) {
TechCorp
-
Empresa
+
Company
-
+
- Nova Vaga
+ New job
diff --git a/frontend/src/components/dashboard-contents/admin-dashboard.tsx b/frontend/src/components/dashboard-contents/admin-dashboard.tsx
index fd31076..8fc71ed 100644
--- a/frontend/src/components/dashboard-contents/admin-dashboard.tsx
+++ b/frontend/src/components/dashboard-contents/admin-dashboard.tsx
@@ -11,10 +11,10 @@ import { Briefcase, Users, TrendingUp, FileText, Plus, MoreHorizontal } from "lu
import { motion } from "framer-motion"
const mockCandidates = [
- { id: "1", name: "João Silva", position: "Desenvolvedor Full Stack", status: "active" },
- { id: "2", name: "Maria Santos", position: "Designer UX/UI", status: "active" },
+ { id: "1", name: "João Silva", position: "Full Stack Developer", status: "active" },
+ { id: "2", name: "Maria Santos", position: "UX/UI Designer", status: "active" },
{ id: "3", name: "Carlos Oliveira", position: "Product Manager", status: "pending" },
- { id: "4", name: "Ana Costa", position: "Engenheiro de Dados", status: "active" },
+ { id: "4", name: "Ana Costa", position: "Data Engineer", status: "active" },
{ id: "5", name: "Pedro Alves", position: "DevOps Engineer", status: "inactive" },
]
@@ -30,7 +30,7 @@ export function AdminDashboardContent() {
transition={{ duration: 0.5 }}
>
Dashboard
-
Visão geral do portal de empregos
+
Overview of the jobs portal
{/* Stats */}
@@ -41,24 +41,24 @@ export function AdminDashboardContent() {
className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"
>
-
+
{/* Jobs Management */}
@@ -69,22 +69,22 @@ export function AdminDashboardContent() {
>
- Gestão de Vagas
+ Job management
router.push('/dashboard/jobs')}>
- Adicionar Vaga
+ Add job
- Título
- Empresa
- Localização
+ Title
+ Company
+ Location
Status
- Candidaturas
- Ações
+ Applications
+ Actions
@@ -92,11 +92,11 @@ export function AdminDashboardContent() {
{job.title}
{job.company}
- {job.location}
-
- Ativa
-
- {((job.id.charCodeAt(0) * 7) % 50) + 10}
+ {job.location}
+
+ Active
+
+ {((job.id.charCodeAt(0) * 7) % 50) + 10}
@@ -118,16 +118,16 @@ export function AdminDashboardContent() {
>
- Gestão de Candidatos
+ Candidate management
- Nome
- Cargo Pretendido
+ Name
+ Desired role
Status
- Ações
+ Actions
@@ -136,9 +136,9 @@ export function AdminDashboardContent() {
{candidate.name}
{candidate.position}
- {candidate.status === "active" && Ativo }
- {candidate.status === "pending" && Pendente }
- {candidate.status === "inactive" && Inativo }
+ {candidate.status === "active" && Active }
+ {candidate.status === "pending" && Pending }
+ {candidate.status === "inactive" && Inactive }
diff --git a/frontend/src/components/dashboard-contents/candidate-dashboard.tsx b/frontend/src/components/dashboard-contents/candidate-dashboard.tsx
index c93ccaf..8af591b 100644
--- a/frontend/src/components/dashboard-contents/candidate-dashboard.tsx
+++ b/frontend/src/components/dashboard-contents/candidate-dashboard.tsx
@@ -37,35 +37,35 @@ export function CandidateDashboardContent() {
return (
- Em análise
+ Under review
)
case "reviewing":
return (
- Em análise
+ Under review
)
case "interview":
return (
- Entrevista
+ Interview
)
case "accepted":
return (
- Aprovado
+ Accepted
)
case "rejected":
return (
- Rejeitado
+ Rejected
)
default:
@@ -85,12 +85,12 @@ export function CandidateDashboardContent() {
-
Olá, {user?.name || "Candidato"}!
-
{user?.area || "Desenvolvimento"}
+
Hi, {user?.name || "Candidate"}!
+
{user?.area || "Engineering"}
- Editar Perfil
+ Edit profile
@@ -105,26 +105,26 @@ export function CandidateDashboardContent() {
className="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8"
>
a.status === "reviewing" || a.status === "interview"
).length
}
icon={Clock}
- description="Aguardando resposta"
+ description="Awaiting a response"
/>
@@ -139,7 +139,7 @@ export function CandidateDashboardContent() {
>
- Vagas recomendadas
+ Recommended jobs
{recommendedJobs.map((job) => (
@@ -157,16 +157,16 @@ export function CandidateDashboardContent() {
>
- Minhas candidaturas
+ My applications
- Vaga
- Empresa
+ Role
+ Company
Status
- Data
+ Date
@@ -181,7 +181,7 @@ export function CandidateDashboardContent() {
{new Date(application.appliedAt).toLocaleDateString(
- "pt-BR"
+ "en-US"
)}
diff --git a/frontend/src/components/dashboard-contents/company-dashboard.tsx b/frontend/src/components/dashboard-contents/company-dashboard.tsx
index 001982f..c8fc35f 100644
--- a/frontend/src/components/dashboard-contents/company-dashboard.tsx
+++ b/frontend/src/components/dashboard-contents/company-dashboard.tsx
@@ -36,35 +36,35 @@ export function CompanyDashboardContent() {
const recentJobs = [
{
id: "1",
- title: "Desenvolvedor Full Stack Sênior",
- type: "Tempo Integral",
+ title: "Senior Full Stack Developer",
+ type: "Full Time",
location: "São Paulo, SP",
- salary: "R$ 12.000 - R$ 18.000",
+ salary: "R$ 12,000 - R$ 18,000",
applications: 45,
views: 320,
- postedAt: "2 dias atrás",
+ postedAt: "2 days ago",
status: "active",
},
{
id: "2",
title: "Designer UX/UI",
- type: "Remoto",
- location: "Remoto",
- salary: "R$ 8.000 - R$ 12.000",
+ type: "Remote",
+ location: "Remote",
+ salary: "R$ 8,000 - R$ 12,000",
applications: 32,
views: 256,
- postedAt: "5 dias atrás",
+ postedAt: "5 days ago",
status: "active",
},
{
id: "3",
title: "Product Manager",
- type: "Tempo Integral",
+ type: "Full Time",
location: "São Paulo, SP",
- salary: "R$ 15.000 - R$ 20.000",
+ salary: "R$ 15,000 - R$ 20,000",
applications: 28,
views: 189,
- postedAt: "1 semana atrás",
+ postedAt: "1 week ago",
status: "active",
},
]
@@ -74,8 +74,8 @@ export function CompanyDashboardContent() {
id: "1",
candidateName: "Ana Silva",
candidateAvatar: "",
- jobTitle: "Desenvolvedor Full Stack Sênior",
- appliedAt: "Há 2 horas",
+ jobTitle: "Senior Full Stack Developer",
+ appliedAt: "2 hours ago",
status: "pending",
},
{
@@ -83,7 +83,7 @@ export function CompanyDashboardContent() {
candidateName: "Carlos Santos",
candidateAvatar: "",
jobTitle: "Designer UX/UI",
- appliedAt: "Há 5 horas",
+ appliedAt: "5 hours ago",
status: "pending",
},
{
@@ -91,7 +91,7 @@ export function CompanyDashboardContent() {
candidateName: "Maria Oliveira",
candidateAvatar: "",
jobTitle: "Product Manager",
- appliedAt: "Há 1 dia",
+ appliedAt: "1 day ago",
status: "reviewing",
},
]
@@ -112,13 +112,13 @@ export function CompanyDashboardContent() {
Dashboard
- Bem-vindo de volta, TechCorp! 👋
+ Welcome back, TechCorp! 👋
- Nova Vaga
+ New job
@@ -128,7 +128,7 @@ export function CompanyDashboardContent() {
- Vagas Ativas
+ Active jobs
@@ -137,7 +137,7 @@ export function CompanyDashboardContent() {
{companyStats.activeJobs}
- Publicadas no momento
+ Live right now
@@ -145,7 +145,7 @@ export function CompanyDashboardContent() {
- Candidaturas
+ Applications
@@ -154,7 +154,7 @@ export function CompanyDashboardContent() {
{companyStats.totalApplications}
- +{companyStats.thisMonth} este mês
+ +{companyStats.thisMonth} this month
@@ -162,7 +162,7 @@ export function CompanyDashboardContent() {
- Visualizações
+ Views
@@ -171,7 +171,7 @@ export function CompanyDashboardContent() {
{companyStats.totalViews}
- Nas suas vagas
+ On your postings
@@ -179,34 +179,34 @@ export function CompanyDashboardContent() {
- Taxa de Conversão
+ Conversion rate
15.2%
- +2.5% vs mês passado
+ +2.5% vs last month
- {/* Vagas Recentes */}
+ {/* Recent jobs */}
- Vagas Recentes
+ Recent jobs
- Suas últimas vagas publicadas
+ Your latest job postings
- Ver todas
+ View all
@@ -243,11 +243,11 @@ export function CompanyDashboardContent() {
- {job.applications} candidaturas
+ {job.applications} applications
- {job.views} visualizações
+ {job.views} views
@@ -269,18 +269,18 @@ export function CompanyDashboardContent() {
- {/* Candidaturas Recentes */}
+ {/* Recent applications */}
- Candidaturas
- Novas candidaturas
+ Applications
+ New applications
- Ver todas
+ View all
diff --git a/frontend/src/components/dashboard-header.tsx b/frontend/src/components/dashboard-header.tsx
index e30d676..73b6766 100644
--- a/frontend/src/components/dashboard-header.tsx
+++ b/frontend/src/components/dashboard-header.tsx
@@ -13,7 +13,7 @@ import {
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
-import { Briefcase, LogOut, User, Settings } from "lucide-react";
+import { LogOut, User } from "lucide-react";
import { logout, getCurrentUser } from "@/lib/auth";
import { NotificationDropdown } from "@/components/notification-dropdown";
@@ -78,7 +78,7 @@ export function DashboardHeader() {
- {user?.name || "Usuário"}
+ {user?.name || "User"}
{user?.email}
@@ -88,12 +88,12 @@ export function DashboardHeader() {
- Perfil
+ Profile
- Sair
+ Sign out
diff --git a/frontend/src/components/footer.tsx b/frontend/src/components/footer.tsx
index fd479a8..ba853c8 100644
--- a/frontend/src/components/footer.tsx
+++ b/frontend/src/components/footer.tsx
@@ -25,21 +25,21 @@ export function Footer() {
- Desenvolvedor Python
+ Python Developer
- Desenvolvedor React
+ React Developer
-
- Analista de Dados
+
+ Data Analyst
-
+
{t('workMode.remote')}
@@ -50,12 +50,12 @@ export function Footer() {
{t('footer.company')}
-
+
{t('footer.about')}
-
+
{t('nav.contact')}
@@ -71,12 +71,12 @@ export function Footer() {
{t('footer.legal')}
-
+
{t('footer.privacy')}
-
+
{t('footer.terms')}
@@ -91,4 +91,3 @@ export function Footer() {
)
}
-
diff --git a/frontend/src/components/job-card.tsx b/frontend/src/components/job-card.tsx
index ebfd73e..1548d5d 100644
--- a/frontend/src/components/job-card.tsx
+++ b/frontend/src/components/job-card.tsx
@@ -58,7 +58,7 @@ export function JobCard({ job }: JobCardProps) {
return "secondary";
case "contract":
return "outline";
- case "Remoto":
+ case "remote":
return "default";
default:
return "outline";
@@ -81,7 +81,7 @@ export function JobCard({ job }: JobCardProps) {
t('jobs.favorites.added.title'),
t('jobs.favorites.added.desc', { title: job.title }),
{
- actionUrl: "/dashboard/candidato/favoritos",
+ actionUrl: "/dashboard/favorites",
actionLabel: t('jobs.favorites.action'),
}
);
@@ -201,7 +201,7 @@ export function JobCard({ job }: JobCardProps) {
{t('jobs.card.viewDetails')}
-
+
{t('jobs.card.apply')}
diff --git a/frontend/src/components/navbar.tsx b/frontend/src/components/navbar.tsx
index e91ad12..85eeb7b 100644
--- a/frontend/src/components/navbar.tsx
+++ b/frontend/src/components/navbar.tsx
@@ -17,8 +17,8 @@ export function Navbar() {
const navigationItems = [
{ href: "/jobs", label: t('nav.jobs') },
- { href: "/sobre", label: t('nav.about') },
- { href: "/contato", label: t('nav.contact') },
+ { href: "/about", label: t('nav.about') },
+ { href: "/contact", label: t('nav.contact') },
]
return (
@@ -63,7 +63,7 @@ export function Navbar() {
{t('nav.login')}
-
+
{t('nav.register')}
@@ -114,7 +114,7 @@ export function Navbar() {
{t('nav.login')}
- setIsOpen(false)}>
+ setIsOpen(false)}>
{t('nav.register')}
diff --git a/frontend/src/components/notification-dropdown.tsx b/frontend/src/components/notification-dropdown.tsx
index cb9de44..62f8548 100644
--- a/frontend/src/components/notification-dropdown.tsx
+++ b/frontend/src/components/notification-dropdown.tsx
@@ -26,16 +26,16 @@ import {
AlertTriangle,
} from "lucide-react";
import { formatDistanceToNow } from "date-fns";
-import { ptBR } from "date-fns/locale";
+import { enUS } from "date-fns/locale";
import Link from "next/link";
import { motion, AnimatePresence } from "framer-motion";
export function NotificationDropdown() {
const pathname = usePathname();
- const isCompanyDashboard = pathname?.startsWith("/dashboard/empresa");
+ const isCompanyDashboard = pathname?.startsWith("/dashboard/company");
const notificationsUrl = isCompanyDashboard
- ? "/dashboard/empresa/notificacoes"
- : "/dashboard/candidato/notificacoes";
+ ? "/dashboard/company/notifications"
+ : "/dashboard/candidate/notifications";
const {
notifications,
unreadCount,
@@ -89,7 +89,7 @@ export function NotificationDropdown() {
- Notificações
+ Notifications
{unreadCount > 0 && (
- Marcar todas
+ Mark all
)}
@@ -110,7 +110,7 @@ export function NotificationDropdown() {
{recentNotifications.length === 0 ? (
- Nenhuma notificação
+ No notifications
) : (
@@ -194,7 +194,7 @@ export function NotificationDropdown() {
new Date(notification.createdAt),
{
addSuffix: true,
- locale: ptBR,
+ locale: enUS,
}
)}
@@ -243,7 +243,7 @@ export function NotificationDropdown() {
className="flex-1 text-xs"
>
- Limpar todas
+ Clear all
setIsOpen(false)}
>
- Ver todas
+ View all
diff --git a/frontend/src/components/profile-picture-upload-v2.tsx b/frontend/src/components/profile-picture-upload-v2.tsx
index b988d47..5ca5949 100644
--- a/frontend/src/components/profile-picture-upload-v2.tsx
+++ b/frontend/src/components/profile-picture-upload-v2.tsx
@@ -115,7 +115,7 @@ export function ProfilePictureUpload({
- Foto de Perfil
+ Profile Photo
)
-}
\ No newline at end of file
+}
diff --git a/frontend/src/components/profile-picture-upload.tsx b/frontend/src/components/profile-picture-upload.tsx
index eebb3ba..4e41794 100644
--- a/frontend/src/components/profile-picture-upload.tsx
+++ b/frontend/src/components/profile-picture-upload.tsx
@@ -133,7 +133,7 @@ export function ProfilePictureUpload({
-
Foto de Perfil
+
Profile Photo
0 ? requirements : ['Ver detalhes'],
+ requirements: requirements.length > 0 ? requirements : ['View details'],
postedAt: apiJob.createdAt?.split('T')[0] || new Date().toISOString().split('T')[0],
};
}
diff --git a/frontend/src/lib/mock-data.ts b/frontend/src/lib/mock-data.ts
index 9fc0d6f..1eb87a6 100644
--- a/frontend/src/lib/mock-data.ts
+++ b/frontend/src/lib/mock-data.ts
@@ -10,41 +10,41 @@ import type {
export const mockJobs: Job[] = [
{
id: "1",
- title: "Desenvolvedor Full Stack Sênior",
+ title: "Senior Full Stack Developer",
company: "TechCorp",
location: "São Paulo, SP",
- type: "Tempo Integral",
- salary: "R$ 12.000 - R$ 18.000",
+ type: "full-time",
+ salary: "R$ 12,000 - R$ 18,000",
description:
- "Buscamos um desenvolvedor full stack experiente para liderar projetos inovadores.",
- requirements: ["React", "Node.js", "TypeScript", "5+ anos de experiência"],
+ "We are looking for an experienced full stack developer to lead innovative projects.",
+ requirements: ["React", "Node.js", "TypeScript", "5+ years of experience"],
postedAt: "2025-10-15",
},
{
id: "2",
- title: "Designer UX/UI",
+ title: "UX/UI Designer",
company: "DesignHub",
location: "São Paulo, SP",
- type: "Remoto",
- salary: "R$ 8.000 - R$ 12.000",
+ type: "remote",
+ salary: "R$ 8,000 - R$ 12,000",
description:
- "Procuramos designer criativo para criar experiências incríveis.",
+ "We are looking for a creative designer to craft incredible experiences.",
requirements: [
"Figma",
"Adobe XD",
- "Portfolio forte",
- "3+ anos de experiência",
+ "Strong portfolio",
+ "3+ years of experience",
],
postedAt: "2025-10-14",
},
{
id: "3",
- title: "Engenheiro de Dados",
+ title: "Data Engineer",
company: "DataFlow",
location: "Rio de Janeiro, RJ",
- type: "Tempo Integral",
- salary: "R$ 15.000 - R$ 22.000",
- description: "Oportunidade para trabalhar com big data e machine learning.",
+ type: "full-time",
+ salary: "R$ 15,000 - R$ 22,000",
+ description: "Opportunity to work with big data and machine learning.",
requirements: ["Python", "SQL", "Spark", "AWS"],
postedAt: "2025-10-13",
},
@@ -53,21 +53,21 @@ export const mockJobs: Job[] = [
title: "Product Manager",
company: "InnovateLab",
location: "Belo Horizonte, MG",
- type: "Tempo Integral",
- salary: "R$ 10.000 - R$ 16.000",
- description: "Lidere o desenvolvimento de produtos digitais inovadores.",
- requirements: ["Gestão de produtos", "Agile", "Análise de dados"],
+ type: "full-time",
+ salary: "R$ 10,000 - R$ 16,000",
+ description: "Lead the development of innovative digital products.",
+ requirements: ["Product management", "Agile", "Data analysis"],
postedAt: "2025-10-12",
},
{
id: "5",
- title: "Desenvolvedor Mobile",
+ title: "Mobile Developer",
company: "AppMakers",
location: "São Paulo, SP",
- type: "Remoto",
- salary: "R$ 9.000 - R$ 14.000",
- description: "Desenvolva aplicativos mobile de alta qualidade.",
- requirements: ["React Native", "iOS", "Android", "3+ anos"],
+ type: "remote",
+ salary: "R$ 9,000 - R$ 14,000",
+ description: "Build high-quality mobile applications.",
+ requirements: ["React Native", "iOS", "Android", "3+ years"],
postedAt: "2025-10-11",
},
{
@@ -75,9 +75,9 @@ export const mockJobs: Job[] = [
title: "DevOps Engineer",
company: "CloudTech",
location: "São Paulo, SP",
- type: "Tempo Integral",
- salary: "R$ 13.000 - R$ 19.000",
- description: "Gerencie infraestrutura cloud e pipelines de CI/CD.",
+ type: "full-time",
+ salary: "R$ 13,000 - R$ 19,000",
+ description: "Manage cloud infrastructure and CI/CD pipelines.",
requirements: ["Docker", "Kubernetes", "AWS", "Terraform"],
postedAt: "2025-10-10",
},
@@ -87,7 +87,7 @@ export const mockApplications: Application[] = [
{
id: "1",
jobId: "1",
- jobTitle: "Desenvolvedor Full Stack Sênior",
+ jobTitle: "Senior Full Stack Developer",
company: "TechCorp",
status: "reviewing",
appliedAt: "2025-10-16",
@@ -95,7 +95,7 @@ export const mockApplications: Application[] = [
{
id: "2",
jobId: "2",
- jobTitle: "Designer UX/UI",
+ jobTitle: "UX/UI Designer",
company: "DesignHub",
status: "interview",
appliedAt: "2025-10-15",
@@ -123,16 +123,16 @@ export const mockUser: User = {
name: "João Silva",
email: "joao@example.com",
role: "candidate",
- area: "Desenvolvimento Full Stack",
+ area: "Full Stack Development",
profileComplete: 85,
};
export const mockNotifications: Notification[] = [
{
id: "1",
- title: "Nova vaga recomendada",
+ title: "New recommended job",
message:
- "Encontramos uma vaga que combina com seu perfil: Desenvolvedor Full Stack Sênior",
+ "We found a role that matches your profile: Senior Full Stack Developer",
type: "info",
read: false,
createdAt: "2025-11-19T10:30:00",
@@ -140,8 +140,8 @@ export const mockNotifications: Notification[] = [
},
{
id: "2",
- title: "Atualização de candidatura",
- message: "Sua candidatura para Designer UX/UI foi movida para entrevista",
+ title: "Application update",
+ message: "Your application for UX/UI Designer moved to interview",
type: "success",
read: false,
createdAt: "2025-11-18T14:20:00",
@@ -149,9 +149,9 @@ export const mockNotifications: Notification[] = [
},
{
id: "3",
- title: "Candidatura aprovada!",
+ title: "Application approved!",
message:
- "Parabéns! Sua candidatura para Product Manager foi aprovada pela empresa InnovateLab",
+ "Congratulations! Your application for Product Manager was approved by InnovateLab",
type: "success",
read: false,
createdAt: "2025-11-18T09:15:00",
@@ -159,8 +159,8 @@ export const mockNotifications: Notification[] = [
},
{
id: "4",
- title: "Nova mensagem",
- message: "A empresa TechCorp enviou uma mensagem sobre sua candidatura",
+ title: "New message",
+ message: "TechCorp sent you a message about your application",
type: "info",
read: true,
createdAt: "2025-11-17T16:45:00",
@@ -168,9 +168,9 @@ export const mockNotifications: Notification[] = [
},
{
id: "5",
- title: "Complete seu perfil",
+ title: "Complete your profile",
message:
- "Adicione mais informações ao seu perfil para aumentar suas chances em 40%",
+ "Add more information to your profile to boost your chances by 40%",
type: "warning",
read: true,
createdAt: "2025-11-17T08:00:00",
@@ -178,9 +178,9 @@ export const mockNotifications: Notification[] = [
},
{
id: "6",
- title: "Lembrete de entrevista",
+ title: "Interview reminder",
message:
- "Você tem uma entrevista agendada para amanhã às 15h com a DesignHub",
+ "You have an interview scheduled tomorrow at 3 PM with DesignHub",
type: "warning",
read: false,
createdAt: "2025-11-16T11:00:00",
@@ -188,9 +188,9 @@ export const mockNotifications: Notification[] = [
},
{
id: "7",
- title: "Nova vaga disponível",
+ title: "New job available",
message:
- "5 novas vagas de Desenvolvedor foram publicadas hoje na sua região",
+ "5 new developer jobs were posted today in your area",
type: "info",
read: true,
createdAt: "2025-11-15T07:30:00",
@@ -198,8 +198,8 @@ export const mockNotifications: Notification[] = [
},
{
id: "8",
- title: "Perfil visualizado",
- message: "3 empresas visualizaram seu perfil nas últimas 24 horas",
+ title: "Profile viewed",
+ message: "3 companies viewed your profile in the last 24 hours",
type: "success",
read: true,
createdAt: "2025-11-14T18:20:00",
@@ -210,9 +210,9 @@ export const mockNotifications: Notification[] = [
export const mockCompanyNotifications: Notification[] = [
{
id: "1",
- title: "Nova candidatura recebida",
+ title: "New application received",
message:
- "Ana Silva se candidatou para a vaga de Desenvolvedor Full Stack Sênior",
+ "Ana Silva applied for the Senior Full Stack Developer role",
type: "info",
read: false,
createdAt: "2025-11-19T10:30:00",
@@ -220,8 +220,8 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "2",
- title: "Candidato aceitou entrevista",
- message: "Carlos Santos confirmou presença na entrevista de amanhã às 14h",
+ title: "Candidate accepted interview",
+ message: "Carlos Santos confirmed attendance for tomorrow at 2 PM",
type: "success",
read: false,
createdAt: "2025-11-18T14:20:00",
@@ -229,9 +229,9 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "3",
- title: "Vaga com alta demanda",
+ title: "High-demand role",
message:
- "A vaga de Designer UX/UI recebeu 15 novas candidaturas nas últimas 24h",
+ "The UX/UI Designer role received 15 new applications in the last 24 hours",
type: "success",
read: false,
createdAt: "2025-11-18T09:15:00",
@@ -239,8 +239,8 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "4",
- title: "Nova mensagem de candidato",
- message: "Maria Oliveira enviou uma mensagem sobre a vaga de Product Manager",
+ title: "New candidate message",
+ message: "Maria Oliveira sent a message about the Product Manager role",
type: "info",
read: true,
createdAt: "2025-11-17T16:45:00",
@@ -248,9 +248,9 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "5",
- title: "Complete o perfil da empresa",
+ title: "Complete your company profile",
message:
- "Adicione logo e informações sobre benefícios para atrair mais candidatos",
+ "Add a logo and benefits details to attract more candidates",
type: "warning",
read: true,
createdAt: "2025-11-17T08:00:00",
@@ -258,9 +258,9 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "6",
- title: "Lembrete: Entrevista agendada",
+ title: "Reminder: interviews scheduled",
message:
- "Você tem 2 entrevistas agendadas para amanhã. Confira os horários",
+ "You have 2 interviews scheduled for tomorrow. Check the times",
type: "warning",
read: false,
createdAt: "2025-11-16T11:00:00",
@@ -268,9 +268,9 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "7",
- title: "Vaga próxima de expirar",
+ title: "Job expiring soon",
message:
- "A vaga de DevOps Engineer expira em 3 dias. Renove para continuar recebendo candidaturas",
+ "The DevOps Engineer role expires in 3 days. Renew it to keep receiving applications",
type: "warning",
read: true,
createdAt: "2025-11-15T07:30:00",
@@ -278,8 +278,8 @@ export const mockCompanyNotifications: Notification[] = [
},
{
id: "8",
- title: "Perfil empresarial visualizado",
- message: "45 candidatos visualizaram o perfil da sua empresa esta semana",
+ title: "Company profile viewed",
+ message: "45 candidates viewed your company profile this week",
type: "success",
read: true,
createdAt: "2025-11-14T18:20:00",
@@ -298,9 +298,9 @@ export const mockTestimonials = [
{
id: "1",
name: "Maria Santos",
- role: "Desenvolvedora",
+ role: "Developer",
content:
- "Encontrei meu emprego dos sonhos em apenas 2 semanas. Plataforma incrível!",
+ "I found my dream job in just 2 weeks. Incredible platform!",
avatar: "/professional-woman-diverse.png",
},
{
@@ -308,7 +308,7 @@ export const mockTestimonials = [
name: "Carlos Oliveira",
role: "Designer",
content:
- "Interface simples e vagas de qualidade. Recomendo para todos os profissionais.",
+ "Simple interface and high-quality roles. I recommend it to every professional.",
avatar: "/professional-man.jpg",
},
{
@@ -316,7 +316,7 @@ export const mockTestimonials = [
name: "Ana Costa",
role: "Product Manager",
content:
- "O processo foi rápido e transparente. Consegui várias entrevistas rapidamente.",
+ "The process was fast and transparent. I landed several interviews quickly.",
avatar: "/professional-woman-smiling.png",
},
];
@@ -328,16 +328,16 @@ export const mockCandidates: Candidate[] = [
email: "ana.silva@example.com",
phone: "+55 11 98765-4321",
location: "São Paulo, SP",
- title: "Desenvolvedora Full Stack",
- experience: "5 anos de experiência",
+ title: "Full Stack Developer",
+ experience: "5 years of experience",
avatar: "/professional-woman-diverse.png",
- bio: "Desenvolvedora apaixonada por criar soluções inovadoras. Experiência em React, Node.js e cloud computing.",
+ bio: "Developer passionate about building innovative solutions. Experience in React, Node.js, and cloud computing.",
skills: ["React", "Node.js", "TypeScript", "AWS", "Docker"],
applications: [
{
id: "1",
jobId: "1",
- jobTitle: "Desenvolvedor Full Stack Sênior",
+ jobTitle: "Senior Full Stack Developer",
company: "TechCorp",
status: "pending",
appliedAt: "2025-10-16",
@@ -345,7 +345,7 @@ export const mockCandidates: Candidate[] = [
{
id: "2",
jobId: "2",
- jobTitle: "Desenvolvedor Mobile",
+ jobTitle: "Mobile Developer",
company: "AppMakers",
status: "accepted",
appliedAt: "2025-10-10",
@@ -358,16 +358,16 @@ export const mockCandidates: Candidate[] = [
email: "carlos.santos@example.com",
phone: "+55 11 91234-5678",
location: "Rio de Janeiro, RJ",
- title: "Designer UX/UI",
- experience: "3 anos de experiência",
+ title: "UX/UI Designer",
+ experience: "3 years of experience",
avatar: "/professional-man.jpg",
- bio: "Designer focado em criar experiências memoráveis. Especialista em design systems e prototipagem.",
+ bio: "Designer focused on creating memorable experiences. Specialist in design systems and prototyping.",
skills: ["Figma", "Adobe XD", "UI Design", "Prototyping", "Design Systems"],
applications: [
{
id: "3",
jobId: "3",
- jobTitle: "Designer UX/UI",
+ jobTitle: "UX/UI Designer",
company: "DesignHub",
status: "pending",
appliedAt: "2025-10-15",
@@ -380,10 +380,10 @@ export const mockCandidates: Candidate[] = [
email: "maria.oliveira@example.com",
phone: "+55 21 99876-5432",
location: "Belo Horizonte, MG",
- title: "Engenheira de Dados",
- experience: "7 anos de experiência",
+ title: "Data Engineer",
+ experience: "7 years of experience",
avatar: "/professional-woman-smiling.png",
- bio: "Engenheira de dados com forte background em machine learning e big data. Apaixonada por transformar dados em insights.",
+ bio: "Data engineer with a strong background in machine learning and big data. Passionate about turning data into insights.",
skills: [
"Python",
"SQL",
@@ -395,7 +395,7 @@ export const mockCandidates: Candidate[] = [
{
id: "4",
jobId: "4",
- jobTitle: "Engenheiro de Dados",
+ jobTitle: "Data Engineer",
company: "DataFlow",
status: "accepted",
appliedAt: "2025-10-13",
@@ -417,9 +417,9 @@ export const mockCandidates: Candidate[] = [
phone: "+55 31 98765-1234",
location: "Curitiba, PR",
title: "Product Manager",
- experience: "6 anos de experiência",
+ experience: "6 years of experience",
avatar: "/placeholder.svg?height=100&width=100",
- bio: "Product Manager com experiência em produtos digitais e metodologias ágeis. Focado em entregar valor ao usuário.",
+ bio: "Product Manager with experience in digital products and agile methodologies. Focused on delivering user value.",
skills: [
"Product Management",
"Agile",
@@ -445,9 +445,9 @@ export const mockCandidates: Candidate[] = [
phone: "+55 41 91234-8765",
location: "Porto Alegre, RS",
title: "DevOps Engineer",
- experience: "4 anos de experiência",
+ experience: "4 years of experience",
avatar: "/placeholder.svg?height=100&width=100",
- bio: "DevOps engineer especializada em automação e infraestrutura cloud. Experiência com Kubernetes e CI/CD.",
+ bio: "DevOps engineer specialized in automation and cloud infrastructure. Experience with Kubernetes and CI/CD.",
skills: ["Docker", "Kubernetes", "AWS", "Terraform", "CI/CD"],
applications: [
{
@@ -468,9 +468,9 @@ export const mockAdminUser = {
email: "admin@portal.com",
role: "admin" as const,
phone: "+55 11 99999-9999",
- department: "Recursos Humanos",
- position: "Gerente de RH",
+ department: "Human Resources",
+ position: "HR Manager",
joinedAt: "2023-06-15",
avatar: "/placeholder.svg?height=200&width=200",
- bio: "Gerente de RH com mais de 10 anos de experiência em recrutamento e seleção. Apaixonado por conectar talentos com oportunidades.",
+ bio: "HR manager with over 10 years of experience in recruiting and selection. Passionate about connecting talent with opportunities.",
};
diff --git a/frontend/src/lib/types.ts b/frontend/src/lib/types.ts
index 9fd475e..caf52da 100644
--- a/frontend/src/lib/types.ts
+++ b/frontend/src/lib/types.ts
@@ -3,7 +3,7 @@ export interface Job {
title: string;
company: string;
location: string;
- type: "full-time" | "part-time" | "contract" | "Remoto" | "Tempo Integral";
+ type: "full-time" | "part-time" | "contract" | "remote";
workMode?: "onsite" | "hybrid" | "remote";
salary?: string;
description: string;