Dark mode em upload pdf

This commit is contained in:
2026-05-18 23:05:33 +01:00
parent 7f12f3eb1f
commit 8043ee42fe
19 changed files with 77 additions and 73 deletions

View File

@@ -1,4 +1,4 @@
# teachit
# Learn It
A new Flutter project.

View File

@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="teachit"
android:label="Learn It"
android:name="${applicationName}"
android:icon="@mipmap/launcher_icon">
<activity

View File

@@ -13,7 +13,7 @@ This document outlines the complete Flutter project structure for the AI Study A
## 📁 ROOT DIRECTORY STRUCTURE
```
teachit/
learn_it/
├── android/ # Android-specific files
├── ios/ # iOS-specific files
├── web/ # Web-specific files
@@ -381,7 +381,7 @@ lib/
### pubspec.yaml
```yaml
name: teachit
name: learn_it
description: AI Study Assistant - Educational Intelligence Platform
version: 1.0.0+1
@@ -551,7 +551,7 @@ linter:
**android/app/build.gradle**
```gradle
android {
namespace 'com.example.teachit'
namespace 'com.example.learnit'
compileSdkVersion flutter.compileSdkVersion
compileOptions {
@@ -564,7 +564,7 @@ android {
}
defaultConfig {
applicationId "com.example.teachit"
applicationId "com.example.learnit"
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
@@ -596,9 +596,9 @@ dependencies {
**ios/Runner/Info.plist**
```xml
<key>CFBundleDisplayName</key>
<string>TeachIt</string>
<string>Learn It</string>
<key>CFBundleIdentifier</key>
<string>com.example.teachit</string>
<string>com.example.learnit</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>UISupportedInterfaceOrientations</key>
@@ -1063,7 +1063,7 @@ class Environment {
static const bool isProductionMode = kReleaseMode;
static const String apiBaseUrl = isDebugMode
? 'http://localhost:8080'
: 'https://api.teachit.app';
: 'https://api.learnit.app';
}
```

View File

@@ -12,7 +12,7 @@
**Dependencies**: None
#### Subtasks:
- [ ] Create new Flutter project: `flutter create teachit`
- [ ] Create new Flutter project: `flutter create learn_it`
- [ ] Configure Flutter SDK version (3.41.9 or latest stable)
- [ ] Set up version control (Git repository)
- [ ] Create initial project structure
@@ -62,8 +62,8 @@ dev_dependencies:
#### Implementation Details:
```bash
# Create project
flutter create teachit
cd teachit
flutter create learn_it
cd learn_it
# Initialize git
git init

View File

@@ -275,7 +275,7 @@ export class FieldEncryption {
async decryptField(encryptedData: EncryptedData, key: string): Promise<string> {
const decipher = crypto.createDecipher(this.algorithm, key);
decipher.setAAD(Buffer.from('teachit-field', 'utf8'));
decipher.setAAD(Buffer.from('learnit-field', 'utf8'));
decipher.setAuthTag(Buffer.from(encryptedData.tag, 'hex'));
let decrypted = decipher.update(encryptedData.data, 'hex', 'utf8');
@@ -409,7 +409,7 @@ export const securityHeaders = {
"style-src 'self' 'unsafe-inline'",
"img-src 'self' data: https:",
"font-src 'self'",
"connect-src 'self' https://api.teachit.app",
"connect-src 'self' https://api.learnit.app",
"frame-ancestors 'none'",
"base-uri 'self'",
"form-action 'self'",
@@ -1218,7 +1218,7 @@ export class GDPRRights {
return {
format: 'JSON',
data: userData,
schema: 'teachit-data-schema-v1.0',
schema: 'learnit-data-schema-v1.0',
};
}
@@ -1433,30 +1433,30 @@ export class SecurityDashboard {
### Security Team
#### Incident Response Team
- **Security Lead**: security@teachit.app
- **Incident Response**: incidents@teachit.app
- **Vulnerability Reports**: vulnerabilities@teachit.app
- **Compliance Officer**: compliance@teachit.app
- **Security Lead**: security@learnit.app
- **Incident Response**: incidents@learnit.app
- **Vulnerability Reports**: vulnerabilities@learnit.app
- **Compliance Officer**: compliance@learnit.app
#### Emergency Contacts
- **Critical Incidents**: +1-800-SECURITY
- **Data Breach**: +1-800-BREACH
- **Legal Counsel**: legal@teachit.app
- **Law Enforcement**: emergency@teachit.app
- **Legal Counsel**: legal@learnit.app
- **Law Enforcement**: emergency@learnit.app
### Reporting Security Issues
#### Vulnerability Disclosure
- **Email**: security@teachit.app
- **Email**: security@learnit.app
- **PGP Key**: Available on request
- **Response Time**: Within 24 hours
- **Bounty Program**: Available for qualifying reports
#### Data Subject Requests
- **Access Requests**: privacy@teachit.app
- **Deletion Requests**: delete@teachit.app
- **Correction Requests**: corrections@teachit.app
- **Complaints**: complaints@teachit.app
- **Access Requests**: privacy@learnit.app
- **Deletion Requests**: delete@learnit.app
- **Correction Requests**: corrections@learnit.app
- **Complaints**: complaints@learnit.app
---

View File

@@ -109,9 +109,9 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:dartz/dartz.dart';
import 'package:teachit/features/auth/domain/entities/user.dart';
import 'package:teachit/features/auth/domain/repositories/auth_repository.dart';
import 'package:teachit/features/auth/domain/usecases/sign_in.dart';
import 'package:learn_it/features/auth/domain/entities/user.dart';
import 'package:learn_it/features/auth/domain/repositories/auth_repository.dart';
import 'package:learn_it/features/auth/domain/usecases/sign_in.dart';
class MockAuthRepository extends Mock implements AuthRepository {}
@@ -353,7 +353,7 @@ import 'package:mockito/mockito.dart';
import 'package:mockito/annotations.dart';
import 'package:teachit/features/auth/presentation/screens/login_screen.dart';
import 'package:teachit/features/auth/presentation/providers/auth_provider.dart';
import 'package:learn_it/features/auth/presentation/providers/auth_provider.dart';
import 'login_screen_test.mocks.dart';
@@ -516,9 +516,9 @@ import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:teachit/main.dart' as app;
import 'package:learn_it/main.dart' as app;
import 'package:teachit/features/auth/presentation/screens/login_screen.dart';
import 'package:teachit/features/student/presentation/screens/student_dashboard_screen.dart';
import 'package:learn_it/features/student/presentation/screens/student_dashboard_screen.dart';
void main() {
group('Authentication Flow Integration Tests', () {
@@ -767,7 +767,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:teachit/main.dart' as app;
import 'package:learn_it/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

View File

@@ -17,7 +17,7 @@ Welcome to the AI Study Assistant! This comprehensive guide will help you master
#### 1. Download and Install
- **Android**: Download from Google Play Store
- **iOS**: Download from App Store
- **Web**: Visit [app.teachit.app](https://app.teachit.app)
- **Web**: Visit [app.learnit.app](https://app.learnit.app)
#### 2. Create Account
1. Open the app
@@ -475,8 +475,8 @@ Monitor class performance with:
- **Tutoring Services**: Additional support
#### Technical Support
- **Email**: support@teachit.app
- **Phone**: 1-800-TEACH-IT
- **Email**: support@learnit.app
- **Phone**: 1-800-LEARN-IT
- **Live Chat**: In-app chat support
- **Community Forum**: User discussions
@@ -565,10 +565,10 @@ Monitor class performance with:
### Contact Information
#### Support Channels
- **Email Support**: support@teachit.app
- **Phone Support**: 1-800-TEACH-IT
- **Email Support**: support@learnit.app
- **Phone Support**: 1-800-LEARN-IT
- **Live Chat**: In-app support
- **Social Media**: @TeachItApp
- **Social Media**: @LearnItApp
#### School Support
- **IT Department**: Technical assistance
@@ -602,10 +602,10 @@ Monitor class performance with:
- **Esc**: Cancel/close
### Emergency Contacts
- **Technical Issues**: support@teachit.app
- **Account Problems**: admin@teachit.app
- **Security Concerns**: security@teachit.app
- **Emergency**: 1-800-TEACH-IT
- **Technical Issues**: support@learnit.app
- **Account Problems**: admin@learnit.app
- **Security Concerns**: security@learnit.app
- **Emergency**: 1-800-LEARN-IT
---

View File

@@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Teachit</string>
<string>Learn It</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -15,7 +15,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>teachit</string>
<string>learnit</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>

View File

@@ -47,11 +47,9 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
appBar: AppBar(
title: const Text(
'Materiais da Disciplina',
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
style: TextStyle(fontWeight: FontWeight.bold),
),
backgroundColor: const Color(0xFF82C9BD),
elevation: 0,
iconTheme: const IconThemeData(color: Colors.white),
),
floatingActionButton: _isUploading
? FloatingActionButton.extended(
@@ -81,12 +79,17 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
),
body: Container(
decoration: const BoxDecoration(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF82C9BD), Color(0xFFF8F9FA)],
stops: [0.0, 0.4],
colors: Theme.of(context).brightness == Brightness.dark
? [
Theme.of(context).colorScheme.primary.withOpacity(0.3),
Theme.of(context).colorScheme.background,
]
: [const Color(0xFF82C9BD), const Color(0xFFF8F9FA)],
stops: const [0.0, 0.4],
),
),
child: SafeArea(
@@ -196,13 +199,14 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
}
void _showUploadOptions() {
final cs = Theme.of(context).colorScheme;
showModalBottomSheet(
context: context,
backgroundColor: Colors.transparent,
builder: (context) => Container(
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
decoration: BoxDecoration(
color: cs.surface,
borderRadius: const BorderRadius.vertical(top: Radius.circular(20)),
),
child: SafeArea(
child: Padding(
@@ -216,7 +220,7 @@ class _TeacherMaterialsPageState extends State<TeacherMaterialsPage> {
width: 40,
height: 4,
decoration: BoxDecoration(
color: Colors.grey[300],
color: cs.onSurface.withOpacity(0.2),
borderRadius: BorderRadius.circular(2),
),
),

View File

@@ -154,7 +154,7 @@ class HelpPage extends StatelessWidget {
context: context,
question: 'Como contactar o suporte?',
answer:
'Pode contactar-nos através do email suporte@teachit.com.',
'Pode contactar-nos através do email suporte@learnit.com.',
),
],
),

View File

@@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "teachit")
set(BINARY_NAME "learnit")
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "com.example.teachit")
set(APPLICATION_ID "com.example.learnit")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.

View File

@@ -5,10 +5,10 @@
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = teachit
PRODUCT_NAME = Learn It
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.example.teachit
PRODUCT_BUNDLE_IDENTIFIER = com.example.learnit
// The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2026 com.example. All rights reserved.

View File

@@ -1,4 +1,4 @@
name: teachit
name: learn_it
description: "AI Study Assistant - Educational Intelligence Platform"
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.

View File

@@ -8,7 +8,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:teachit/main.dart';
import 'package:learn_it/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {

View File

@@ -23,13 +23,13 @@
<!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="teachit">
<meta name="apple-mobile-web-app-title" content="Learn It">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>teachit</title>
<title>Learn It</title>
<link rel="manifest" href="manifest.json">
</head>
<body>

View File

@@ -1,6 +1,6 @@
{
"name": "teachit",
"short_name": "teachit",
"name": "Learn It",
"short_name": "Learn It",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",

View File

@@ -1,10 +1,10 @@
# Project-level configuration.
cmake_minimum_required(VERSION 3.14)
project(teachit LANGUAGES CXX)
project(learnit LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "teachit")
set(BINARY_NAME "learnit")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.

View File

@@ -90,12 +90,12 @@ BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "com.example" "\0"
VALUE "FileDescription", "teachit" "\0"
VALUE "FileDescription", "Learn It" "\0"
VALUE "FileVersion", VERSION_AS_STRING "\0"
VALUE "InternalName", "teachit" "\0"
VALUE "InternalName", "learnit" "\0"
VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0"
VALUE "OriginalFilename", "teachit.exe" "\0"
VALUE "ProductName", "teachit" "\0"
VALUE "OriginalFilename", "learnit.exe" "\0"
VALUE "ProductName", "Learn It" "\0"
VALUE "ProductVersion", VERSION_AS_STRING "\0"
END
END

View File

@@ -27,7 +27,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
FlutterWindow window(project);
Win32Window::Point origin(10, 10);
Win32Window::Size size(1280, 720);
if (!window.Create(L"teachit", origin, size)) {
if (!window.Create(L"Learn It", origin, size)) {
return EXIT_FAILURE;
}
window.SetQuitOnClose(true);