Create a full-stack web application using Next.js App Router, Drizzle ORM with PostgreSQL, and Tailwind CSS. The application, named 'Secret Wallet', is designed to help young adults manage their finances independently from their parents. The MVP should include user authentication, secure fund transfers to external accounts, income tracking, expense categorization, goal setting, and basic financial literacy content. Ensure a multi-page structure within the 'app/' directory. Implement robust API routes for all CRUD operations.
**Database Schema (Drizzle ORM):**
1. **Users Table:** `id` (UUID, primary key), `email` (unique), `passwordHash`, `createdAt`, `updatedAt`.
2. **Accounts Table:** `id` (UUID, primary key), `userId` (foreign key to Users), `accountName` (e.g., 'Main Savings', 'Emergency Fund'), `accountNumber` (masked for display), `balance`, `createdAt`, `updatedAt`.
3. **Transactions Table:** `id` (UUID, primary key), `accountId` (foreign key to Accounts), `type` ('income' or 'expense'), `amount`, `description`, `category`, `transactionDate`, `createdAt`, `updatedAt`.
4. **Goals Table:** `id` (UUID, primary key), `userId` (foreign key to Users), `goalName`, `targetAmount`, `currentAmount`, `deadline`, `createdAt`, `updatedAt`.
5. **Content Table:** `id` (UUID, primary key), `title`, `slug` (unique), `body`, `author`, `createdAt`, `updatedAt`.
**API Routes (app/api/**):
* `/auth`: Handle user registration, login, logout.
* `/accounts`: CRUD operations for user's accounts.
* `/transactions`: CRUD operations for user's transactions.
* `/transfers`: Initiate and manage transfers to external accounts (simulate for MVP).
* `/goals`: CRUD operations for financial goals.
* `/content`: Fetch financial literacy articles.
**Frontend (app/**):
* **Layouts:** Implement a root layout with navigation and a user-specific dashboard layout.
* **Pages:**
* `/auth/register`: User registration page.
* `/auth/login`: User login page.
* `/dashboard`: Overview of accounts, recent transactions, goal progress.
* `/accounts/new`, `/accounts/[id]`: Create and view/edit specific accounts.
* `/transactions/new`, `/transactions/[id]`: Create and view/edit specific transactions.
* `/goals/new`, `/goals/[id]`: Create and view/edit financial goals.
* `/learn`: Display financial literacy articles.
* `/transfer`: Page to initiate transfers to external accounts.
* **Components:** Create reusable UI components using Tailwind CSS for forms, tables, charts (e.g., for balance over time), and navigation.
**Security Considerations:**
* Secure password hashing using bcrypt.
* JWT for session management.
* Input validation on both frontend and backend.
* Implement rate limiting for API routes.
**MVP Specifics:**
* For transfers, simulate the process without actual bank integration. Record the transaction as if it were successful.
* The 'learn' section should have at least 3-5 pre-defined articles.
* Focus on a clean, intuitive mobile-first UI.